Python3のvenvについて
参考
環境
- OS
- Windows10
- WSL2: Ubuntu18.04
- Windows10
- 言語
- anyenv
- pyenv
- python 3.8.5
- pyenv
- anyenv
導入
- Pythonで自己完結型のディレクトリツリーを作成すること。
- ディレクトリごとにモジュールを独立させること。
仮想環境の作成
- venvは通常、入手可能な最新バージョンのPythonをインストールします。
- (pyenvなどを使用することによって)システムに複数のバージョンのPythonがある場合は、任意のバージョンを実行して特定のPythonバージョンを選択できる。
- 仮想環境を作成するには、それを配置するディレクトリを決定し、ディレクトリパスを使用してスクリプトとしてvenvモジュールを実行する
root@MY-PC:~/workspace/python# python3 -m venv <任意の名前>
root@MY-PC:~/workspace/python# mkdir <任意の名前>
root@MY-PC:~/workspace/python# cd <任意の名前>
root@MY-PC:~/workspace/python/<任意の名前># python -m venv .
今回はtutorial-env
という仮想環境を作成する
root@MY-PC:~/workspace/python# ls
tutorial-env
-
tutorial-env
というディレクトリが存在しない場合は作成される -
tutorial-env
の中に以下のものが作成される- Pythonインタープリタのコピー
- 標準ライブラリ
- その他さまざまなサポートファイルを含むディレクトリ
root@MY-PC:~/workspace/python/tutorial-env# ls
bin include lib lib64 pyvenv.cfg
仮想環境を作成したら、以下のコマンドでアクティベートできるようになる。
root@MY-PC:~/workspace/python/tutorial-env# source bin/activate
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env#
このスクリプトはbashシェル用に作成されています。csh,fishシェルを使用する場合は、代わりに使用する
activate.csh
およびactivate.fish
スクリプトが用意されています。
仮想環境をアクティベートすると、シェルのプロンプトが変更され、先頭に「(turorial-env)」(実行中の仮想環境名)が追加されます。
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env#
この状態では、仮想環境内のpythonやpipが使用されます。
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env# which pip
/root/workspace/python/tutorial-env/bin/pip
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env# which python
/root/workspace/python/tutorial-env/bin/python
仮想環境の終了
deactivate
を実行するとプロンプトが元に戻り仮想環境を終了することができる。
(tutorial-env) root@MY-PC:~/workspace/python# deactivate
root@MY-PC:~/workspace/python#
pip installでいろいろエラーが出る
pip install
でエラーが多発していたのでメモ
ModuleNotFoundError: No module named '_ctypes'
以下の記事を参考にさせていただき…
[Qiita]pyenvで3.7系のインストールに失敗したときのメモ
ModuleNotFoundError: No module named '_ctypes'
(1) 一旦python
をアンインストール
root@MY-PC:~/workspace/python# pyenv uninstall 3.8.5
pyenv: remove /root/.anyenv/envs/pyenv/versions/3.8.5? [y|N]y
pyenv: 3.8.5 uninstalled
(2) libffi-devというものが必要なようなのでインストール
root@MY-PC:~/workspace/python# apt install libffi-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
geoip-database libgeoip1 liblwres160 libmspack0 zerofree
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
libffi-dev
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 156 kB of archives.
After this operation, 362 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic/main amd64 libffi-dev amd64 3.2.1-8 [156 kB]
Fetched 156 kB in 1s (132 kB/s)
Selecting previously unselected package libffi-dev:amd64.
(Reading database ... 36981 files and directories currently installed.)
Preparing to unpack .../libffi-dev_3.2.1-8_amd64.deb ...
Unpacking libffi-dev:amd64 (3.2.1-8) ...
Setting up libffi-dev:amd64 (3.2.1-8) ...
Processing triggers for install-info (6.5.0.dfsg.1-2) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
(3) 再びpython3.8.5
をインストール
root@MY-PC:~/workspace/python# pyenv install 3.8.5
Downloading Python-3.8.5.tar.xz...
-> https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
Installing Python-3.8.5...
Installed Python-3.8.5 to /root/.anyenv/envs/pyenv/versions/3.8.5
root@MY-PC:~/workspace/python#
root@MY-PC:~/workspace/python# python --version
Python 3.8.5
ModuleNotFoundError: No module named 'Cython'
今度はCython
がないと言われたのでそれっぽいことが書かれていた以下の記事を参考にさせていただき
[Github]ImportError: No module named Cython.Build #78
ModuleNotFoundError: No module named 'Cython'
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env# pip install --upgrade cython
Collecting cython
Using cached Cython-0.29.21-cp38-cp38-manylinux1_x86_64.whl (1.9 MB)
Installing collected packages: cython
Successfully installed cython-0.29.21
error: cmake
not found, and CMAKE
is not set.
今度はcmake
がないと言われたので
error: `cmake` not found, and `CMAKE` is not set.
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env# pip install cmake
Collecting cmake
Downloading cmake-3.18.0-py3-none-manylinux1_x86_64.whl (18.2 MB)
|████████████████████████████████| 18.2 MB 6.0 MB/s
Installing collected packages: cmake
Successfully installed cmake-3.18.0