CUBE SUGAR CONTAINER

技術系のこと書きます。

Ubuntu の APT で入る Python 仮想環境系のパッケージを使う

最近は Docker などのコンテナ技術の台頭もあって、プログラミング言語に固有の仮想環境を使う人は以前より減った印象がある。 とはいえ、手元でササッと検証するときなどには便利なことに変わりはない。 今回は、Ubuntu を使って APT で入る Python の仮想環境系のパッケージについてまとめておく。 具体的には以下のとおりで、Conda 系に関しては扱わない。

  • python3-venv
  • python3-virtualenv
  • python3-virtualenvwrapper

使った環境は次のとおり。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04 LTS
Release:    22.04
Codename:   jammy
$ uname -srm
Linux 5.15.0-41-generic aarch64
$ dpkg -l | egrep "(python3-venv|python3-virtualenv)"
ii  python3-venv                    3.10.4-0ubuntu2                         arm64        venv module for python3 (default python3 version)
ii  python3-virtualenv              20.13.0+ds-2                            all          Python virtual environment creator
ii  python3-virtualenv-clone        0.3.0-2                                 all          script for cloning a non-relocatable virtualenv (Python3)
ii  python3-virtualenvwrapper       4.8.4-4                                 all          extension to virtualenv for managing multiple environments (Py3)

もくじ

python3-venv

最初に紹介するのは Python が組み込みで提供する仮想環境の機能である venv モジュール。 Ubuntu の場合は、機能が固有のパッケージに分離されているので、個別にインストールする必要がある。

まずはパッケージをインストールする。

$ sudo apt-get install python3-venv

これで、Python の標準ライブラリとして venv モジュールが使えるようになる。 仮想環境を作るには次のようにする。 <name> には仮想環境の名前を入れるけど、これは要するに後述するディレクトリの名前になる。

$ python3 -m venv <name>

例えば example という名前で環境を作る。

$ python3 -m venv example

すると、実行したディレクトリに example というディレクトリができる。 この中に Python の実行環境が作られる。

$ find example -maxdepth 2 
example
example/bin
example/bin/pip3.10
example/bin/Activate.ps1
example/bin/python3
example/bin/python3.10
example/bin/pip
example/bin/activate
example/bin/activate.csh
example/bin/pip3
example/bin/activate.fish
example/bin/python
example/include
example/lib
example/lib/python3.10
example/pyvenv.cfg
example/lib64

環境を使うにはディレクトリの bin ディレクトリの中にある activate ファイルを source コマンドで読み込む。

$ source example/bin/activate

仮想環境を有効にして pip3 コマンドを使ってインストールされているパッケージを表示してみる。 すると、パッケージがほとんど入っていないまっさらな環境であることがわかる。

(example) $ pip3 list
Package    Version
---------- -------
pip        22.0.2
setuptools 59.6.0

あとはここに任意のパッケージをインストールして使えば良い。 これなら、システムの環境を汚すことなく検証ができる。

仮想環境から抜けるときは deactivate コマンドを実行する。

$ deactivate 

仮想環境を削除したいときは、単に前述のディレクトリを削除すれば良い。

python3-virtualenv

次に紹介するのは virtualenv パッケージで、こちらは venv よりも昔からある。 とはいえ、オプションなどを含めて使い勝手はほとんど venv と変わらない。

ひとまずインストールしておこう。

$ sudo apt-get install python3-virtualenv

仮想環境を作るときは virtualenv コマンドを使う。

$ virtualenv <name>

今回も example という名前で仮想環境を作ってみる。 なお、先ほど venv で作ったディレクトリが残ったままだとうまくいかないはずなので、必要に応じて削除する。

$ virtualenv example

実行すると、こちらも example という名前のディレクトリの中に Python の実行環境が作られる。

$ find example -maxdepth 2 
example
example/bin
example/bin/pip3.10
example/bin/wheel3
example/bin/deactivate.nu
example/bin/python3
example/bin/pip-3.10
example/bin/activate.nu
example/bin/activate_this.py
example/bin/wheel-3.10
example/bin/python3.10
example/bin/pip
example/bin/activate.ps1
example/bin/activate
example/bin/activate.csh
example/bin/wheel3.10
example/bin/wheel
example/bin/pip3
example/bin/activate.fish
example/bin/python
example/.gitignore
example/lib
example/lib/python3.10
example/pyvenv.cfg

仮想環境を有効にするやり方も、venv と同じ。

$ source example/bin/activate

仮想環境の中ではインストールされているパッケージがまっさらなのも同じ。

(example) $ pip3 list
Package    Version
---------- -------
pip        22.0.2
setuptools 59.6.0
wheel      0.37.1

仮想環境から抜ける方法も変わらない。

$ deactivate 

仮想環境を削除するのもディレクトリを削除すれば良いだけ。

python3-virtualenvwrapper

続いて紹介する virtualenvwrapper は、その名のとおり virtualenv のラッパーとして動作するスクリプトになっている。

ひとまずインストールする。

$ sudo apt-get install python3-virtualenvwrapper

インストールできたら、パッケージに含まれるシェルスクリプトを source コマンドであらかじめ読み込む。 これは、必要に応じてシェルの設定ファイルに記述すれば良い。

$ source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

仮想環境を作るには mkvirtualenv コマンドを使う。

$ mkvirtualenv <name>

先ほどと同じように example という名前で作る場合には、次のとおり。

$ mkvirtualenv example

virtualenvwrapper の場合は、カレントワーキングディレクトリの下に仮想環境の入ったディレクトリが作られることはない。 また、環境を作った時点で自動的に環境がアクティベートされる。

(example) $ pip3 list
Package    Version
---------- -------
pip        22.0.2
setuptools 59.6.0
wheel      0.37.1

仮想環境から抜ける方法は virtualenv と変わらない。

(example) $ deactivate 

仮想環境のディレクトリは、デフォルトではホームディレクトリに .virtualenvs というパスにある。 以下に example というディレクトリが確認できる。

$ ls -1 ~/.virtualenvs/
example
get_env_details
initialize
postactivate
postdeactivate
postmkproject
postmkvirtualenv
postrmvirtualenv
preactivate
predeactivate
premkproject
premkvirtualenv
prermvirtualenv

作成済みの仮想環境をまた有効にするときは workon コマンドを使う。

$ workon example
(example) $

仮想環境を削除するときは、あらかじめ仮想環境から抜けた上で rmvirtualenv コマンドを実行する。

(example) $ deactivate
$ rmvirtualenv example

このように virtualenvwrapper は、あくまで virtualenv を便利にするためのラッパースクリプトに過ぎない。

いじょう。