Virtualenv

Virtualenvの目的

VirtualEnv はPythonの仮想環境を作ります。それだけですが、非常に便利です。 virtualenvwrapper も合わせて使うと便利らしいです。 workingenv や virtual-python の後継という位置づけのようです。

今回はPython環境を一切変更せずに導入する方法で進めます。

注釈

2010/9/8追記

VirtualEnvでGoogleAppEngineの開発は出来ないらしいと聞いたのですが、 だれか成功している人は shimizukawa at gmail.com までご連絡下さい。

筆者のお勧めはvirtualenvではなくbuildoutを使うことです。 詳しくは /buildout/gae を参照

virtualenvをゲット

  1. http://pypi.python.org/pypi/virtualenv から virtualenv-1.4.9.tar.gz を取得

  2. 中身から virtualenv.py をゲット, どこか(仮に/tmpとする)に置いておく。

virtualenv環境を作成

python /tmp/virtualenv.py env1 のようにして環境を作ります。 複数のPythonがインストールされている人は今回使いたいPythonを使ってください。 以降、そのPythonのバージョンに環境が固定されます。

$ python /tmp/virtualenv.py --no-site-package env1
$ cd env1
$ source bin/activate
(env1)$

これで専用環境ができました。

注釈

Windowsの人は source bin/activate の代わりに Scripts/activate.bat です。

警告

Macでvirtualenvがうまくいかない場合があります。問題になるのはMac標準の Pythonを使用している(MacPortsのPythonを使用していない)場合や、Macで複数 のPythonをsymlinkで切り替えている場合です。

こういった環境の場合、virtualenv環境下でeasy_installを行うと、Mac標準の Python環境下のsite-packagesにインストールされてしまう問題が発生します。

これに該当する場合、virtualenvの環境作成時に virtualenv -p [python-interpreter] env1 のように-pオプションで実際に 使用するPythonインタプリタを指定するとうまくいく場合があるようです。

これでもうまくいかない場合は内部で利用するモジュールをeasy_installでは なくdistributeを使うように virtualenv --distribute env1 のように オプション指定すると解消される場合があるようです。

参考: virtualenv not working with default Python on Mac OS 10.6

easy_installしてみる

virtualenvで環境を作ると、easy_installコマンドが自動的に使えるようになります。 試しに本体のPythonにインストールしていない何かをeasy_installしてみてください。 例えば aodag.util とか:

(env1)$ easy_install aodag.util
(env1)$ mkpkg foo.bar

インストールされたmkpkgはこのenv1環境でしか使えません。 また、 --no-site-package オプションを付けたので、Python本体にeasy_install などでインストールしているものがあっても使うことは出来ません。

まとめ

VirtualenvはPython環境から独立して好きなようにeasy_installできる環境です。 要らなくなったらディレクトリごと削除してしまえます。 その代わりに、Virtualenv環境毎にインストールパッケージが独立してしまうので あまり作りすぎるとDISKを圧迫します。インストールのたびにダウンロードするし。

おまけ

  • --distribute オプションを付けるとsetuptoolsの代わりにdistributeを使います。

  • pipも自動的に入っています

  • virtualenv.py のコード内に上記がこっそり同梱されています