venvで仮想環境を作成する

venvで仮想環境を作成する Python

Xserverでvenvを使用してPythonの仮想環境を作成します。

venvで仮想環境を作成する

pythonのバージョン確認

サーバーにインストールされているpythonのバージョンを サーバーパネル or コマンドで確認します。

[user@hostname ~]$ ls -ltr /usr/bin/python*
-rwxr-xr-x 2 root root 11312  6月 24  2021 /usr/bin/python3.4m
-rwxr-xr-x 2 root root 11312  6月 24  2021 /usr/bin/python3.4
-rwxr-xr-x 1 root root  7144  6月 20 20:37 /usr/bin/python2.7
-rwxr-xr-x 2 root root 11336  6月 20 20:55 /usr/bin/python3.6m
-rwxr-xr-x 2 root root 11336  6月 20 20:55 /usr/bin/python3.6
lrwxrwxrwx 1 root root     9  7月 21 16:52 /usr/bin/python2 -> python2.7
lrwxrwxrwx 1 root root     7  7月 21 16:52 /usr/bin/python -> python2
lrwxrwxrwx 1 root root     9  7月 25 20:29 /usr/bin/python3 -> python3.6

3つのバージョンのpythonがインストールされています。venvは pythonのバージョン3.3以降で標準実装されているため、今回は仮想環境を作成するので python3 を使用します。

※pythonコマンドには2.7が紐付けられているため、仮想環境を作成する場合に使用したならばエラー(/usr/local/bin/python: No module named venv)が発生します。

シンボリックリンクが貼られているため、python3 でも python3.6 でもどちらのコマンドを使用しても、バージョン3.6のpythonが使用可能です。

venvで仮想環境作成

ルート権限がないため、pipはインストールできません。そのため、pipがインストールされないようにオプション(–without-pip)をつけて、仮想環境を作成します。{仮想環境名}には pyvenv, myenv などの値を指定します。

そして、ファイルを確認すると仮想環境が作成できていることが確認できます。

[user@hostname ~]$ python3 -m venv --without-pip {仮想環境名}

[user@hostname ~]$ ls {仮想環境名}
bin  include  lib  lib64  pyvenv.cfg

–without-pip のオプションを設定しない場合は、コマンド実行すると下記のようなエラーメッセージが表示されれます。

[user@hostname ~]$ python3 -m venv {仮想環境名}
Error: Command '['/home/user/pyvenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 2.

仮想環境の有効化

仮想環境を有効化します。有効化するとプロンプトの前に({仮想環境名})が付与されます。

[user@hostname ~]$ source {仮想環境名}/bin/activate
({仮想環境名}) [user@hostname ~]$ 

有効化が正常であることを確認するために pythonのバージョンを確認します。Python 3.6.8と出力され、仮想環境の作成と有効化ができたことが確認できます。

({仮想環境名}) [user@hostname ~]$ python -V
Python 3.6.8

pipのインストール

ダウンロード

python3.6では最新のget-pip.pyが使用できないため、python3.6で使用可能な インストールファイルをダウンロードします。

[user@hostname ~]$ curl -O https://bootstrap.pypa.io/pip/3.6/get-pip.py
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 2108k  100 2108k    0     0  37.0M      0 --:--:-- --:--:-- --:--:-- 37.4M

※最新のget-pip.pyは、python3.7以降のpythonが必要になります。

[user@hostname ~]$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip-3.7.py
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 2570k  100 2570k    0     0  75.9M      0 --:--:-- --:--:-- --:--:-- 78.4M

min_version = (3, 7)

インストール

インストールし、現在インストールされているパッケージを確認します。

パッケージが確認できたならば、インストールができれいることが確認できます。

({仮想環境名}) [user@hostname ~]$ python get-pip.py
Collecting pip<22.0
  Using cached pip-21.3.1-py3-none-any.whl (1.7 MB)
…
Successfully installed pip-21.3.1

({仮想環境名}) [user@hostname ~]$pip list
Package    Version
---------- -------
pip        21.3.1
setuptools 59.6.0
wheel      0.37.1

pipによるインストール確認

pytestをインストールして、パッケージがインストールできるこをを確認します。

({仮想環境名}) [user@hostname ~]$ pip install pytest
Collecting pytest
  Using cached pytest-7.0.1-py3-none-any.whl (296 kB)
…
Successfully installed pytest-7.0.1

({仮想環境名}) [user@hostname ~]$ pip list
Package            Version
------------------ -------
attrs              22.2.0
importlib-metadata 4.8.3
iniconfig          1.1.1
packaging          21.3
pip                21.3.1
pluggy             1.0.0
py                 1.11.0
pyparsing          3.1.1
pytest             7.0.1
setuptools         59.6.0
tomli              1.2.3
typing_extensions  4.1.1
wheel              0.37.1
zipp               3.6.0

仮想環境から出る

仮想環境の無効化

仮想環境を無効化します。プロンプトの前に付与されていた ({仮想環境名}) が表示されなくなります。

({仮想環境名}) [user@hostname ~]$ deactivate
[user@hostname ~]$ 

コメント