Pythonの環境を切り替えるためのツールです。site-packagesのパスを切り替える感じ。それに対してpythonbrewの方は/usr/bin/pythonから丸ごと切り替える感じ。
同じpython2.7でも、使用するモジュールのバージョンを変えたいことがあると思います。
- gaeはDjango1.2
- herokuはDjango1.4
とか。今日はgae環境で作業、明日はheroku環境で作業、といったことがコマンド一つでできてします。それがvirtualenv。
自分としては仮想環境でOS丸ごと切り替えるのが流行だったのですが(雑でスイマセン)、herokuが推奨してたのでたまには使ってやろうかな、と。
herokuはrubyだけじゃなくてpythonもコミュニティの文化を良く理解してる感じがして、期待できそう。
そんな感じなvirtualenvのメモ。
インストール方法
- インストールはeasy_installで。これ以降easy_installは使わず、pipでインストールします。
- 特に書くことが無い・・・
# easy_install virtualenv Searching for virtualenv Reading http://pypi.python.org/simple/virtualenv/ Reading http://www.virtualenv.org Reading http://virtualenv.openplans.org Best match: virtualenv 1.7.1.2 Downloading http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.7.1.2.tar.gz#md5=3be8a014c27340f48b56465f9109d9fa Processing virtualenv-1.7.1.2.tar.gz Running virtualenv-1.7.1.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-7Nfz5N/virtualenv-1.7.1.2/egg-dist-tmp-GxwbmV warning: no previously-included files matching '*.*' found under directory 'docs/_templates' Adding virtualenv 1.7.1.2 to easy-install.pth file Installing virtualenv script to /usr/local/bin Installed /Library/Python/2.7/site-packages/virtualenv-1.7.1.2-py2.7.egg Processing dependencies for virtualenv Finished processing dependencies for virtualenv
使い方
- 環境を作る。venvという名前でディレクトリが作成される。
% virtualenv venv New python executable in venv/bin/python Installing setuptools............done. Installing pip...............done. % ls venv/
- 環境を切り替える。プロンプトに環境名が表示される。
% source venv/bin/activate (venv)%
- パッケージのインストールはpipで行う。uninstallもできるよ!
(venv)% pip install Django psycopg2 Downloading/unpacking Django Downloading Django-1.4.tar.gz (7.6Mb): 7.6Mb downloaded Running setup.py egg_info for package Django Downloading/unpacking psycopg2 Downloading psycopg2-2.4.4.tar.gz (648Kb): 648Kb downloaded Running setup.py egg_info for package psycopg2 (中略) no previously-included directories found matching 'doc/src/_build' Successfully installed Django psycopg2 Cleaning up...
venvディレクトリのsite-packagesを見ると、djangoとpsycopg2がインストールされている。Django1.4!!(venv)% ls venv/lib/python2.7/site-packages/ Django-1.4-py2.7.egg-info/ django/ psycopg2-2.4.4-py2.7.egg-info/ pip-1.1-py2.7.egg/ psycopg2/ easy-install.pth setuptools.pth
- 設定について。インタープリターでsys.pathを確認してみてください。
(venv)% python Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path (秘密。だけど、venvの下のパスが並ぶ) >>>
こりゃ簡単便利。試してみたいモジュールがあったら一つ環境を作ってインストールするとよさそう。