最近は 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 を便利にするためのラッパースクリプトに過ぎない。
いじょう。