/var/log/soymsk

id:soy_msk


Pythonにおける仮想環境構築ツール

Pythonの仮想環境ツールがいろいろありすぎて混乱するので、整理目的で調査してみる。 ざっと調べた感じでは以下のとおり。

Pyenv

複数バージョンのPythonバイナリを管理するもの。プロジェクト(ディレクトリ)単位での異なるバージョンのPythonが使用できるようになる。 ただし、コレ単体だとバージョンごとのsite-packagesは同じなので、例えばプロジェクトAとプロジェクトBで同じバージョンのPythonを使っていると、ライブラリも共有せざるを得ない。

Virtualenv

Pythonの仮想環境を作成するもの。プロジェクトごとにsite-packagesを分けることができる。Pyenvと違い、コレ単体ではPythonバイナリのバージョンは分けられないが、ライブラリは分けることができる。

pyenv-virtualenv

Pyenvのvirtualenvプラグイン。PyenvでPython本体のバージョン管理をしつつ、Virtualenvでライブラリの管理もできる。だいたいこれが使われているらしい。

Pyvenv

python3.3で追加された。これ自体は単なるvenvのラッパーらしい。venvではPythonバイナリのバージョンとsite-packagesディレクトリの管理ができる。ただし、バイナリの管理はすでにインストールされているバイナリに固定されているだけなので、バイナリのバージョン管理ができると言えるかどうか。。これ単体で使うくらいならpyenv-virtualenvをつかっておいた方がいいかも。ツール自体もPython3に依存しているのでPyvenvを使う場合は、まずはPython3.4を入れる必要がある。

まとめ

とりあえずpyenv-virtualenvをつかっておけば問題なさそう。 Python3.3以降を使う、かつバイナリのバージョンにはそれほど細かい管理は不要というのであれば、Pyvenvもいいかもしれない。

更新(2016/02/04)

記事を書いてからいくつかPythonで開発をしているけど、今のところpyenv-virtualenvでpython2も3も問題なし!