MacでPython( virtualenv と virtualenvwrapper ) ①

さて昨日の転職話の続ry) ではありません。

Mac で Python - Study03.net 対シンバシ専用

昨日のエントリで書いた、virtualenvとvirtualenvwrapperの使い方について簡単に覚え書きをしておこうと思います。

まずはvirtualenvです。

1. 確認

virtualenvとは、色んなものをハショって簡単に説明すると、Pythonの実行環境を仮想化?してくれるツールです。言葉じゃ良くわからんので昨日のヤツを例に簡単にやってみませう。

まず昨日の状態だと、いくつかpipモジュールをインストールした状態なので、

pip freeze

という今どんなパッケージがインストールされているか一覧でわかるコマンドを打つと

distribute==0.6.15
mercurial==1.8.2
pep8==0.6.1
pyflakes==0.4.0
virtualenv==1.6
virtualenvwrapper==2.6.3
wsgiref==0.1.2

大体こんな感じで最小限のパッケージがインストールされた状態になっていると思います。このままpip install bucho みたいな感じでバカスかパッケージをインストールしていってもいいんですが、そうすると、site-package以下もバカスか肥大化していって複数の開発プロジェクトのものを、同一マシンで、開発しようとすると、こっちのプロジェクトはアレが必要でそっちはコレが必要でという感じで訳がわからなくなりそうです。

/usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages

また、単純にpythonと打つと、今は /usr/local/bin の python(2.7.1) が呼ばれるようなっていますが、新しく開発したいものは、Macのデフォルトに入ってる、python2.6 で開発したいと行った場合、PATH環境変数をいじったりしてこれもめんどくさそうです。

2 . 仮想環境の作成

ある開発プロジェクト、システムだけのPython実行環境を、別で作ってあげてそこの中で開発したいという時に出番なのが、virtualenvです。さっそくやってみませう。まずvirtualenvを作る前の実行環境を確認しておきましょう。

$ python

Python 2.7.1 (r271:86832, Apr 11 2011, 10:32:24) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.9)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

$ pip freeze

distribute==0.6.15
mercurial==1.8.2
pep8==0.6.1
pyflakes==0.4.0
virtualenv==1.6
virtualenvwrapper==2.6.3
wsgiref==0.1.2

確認ができたら、今回は、python2.6 を使うような仮想環境を「~/.testenv」として作りましょう。

virtualenv --python=/usr/bin/python2.6 ~/.testenv

エラーがなくセットアップが完了したら、ホームディレクトリの中に仮想環境が作られることを確認しましょう。

$ ls -la ~/.testenv

.Python -> /System/Library/Frameworks/Python.framework/Versions/2.6/Python
 bin
include
lib

3. 仮想環境のactivate

仮想環境ができたら今度は仮想環境を実行しましょう。

$ source ~/.testenv/bin/activate

そうするとシェルの先頭に (.testenv) というメッセージが出るのが確認できると思います。この状態が、仮想環境が実行されている状態です。

(.testenv)hogehoge:.testenv tell_k$

これでもう、python2.6を使う準備が整ったので、事前に確認したの同じように、python と pip freezeをみてみましょう。

$ python
 
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

$pip freeze
wsgiref==0.1.2

結果が変わりましたね。これでpythn2.6の仮想的な実行環境ができました。あとは仮想環境で pip install でパッケージとかをインストールすると、.testenv以下にインスコされていくので、デフォのsite-packageを汚さずに開発環境が構築できそうです。

仮想環境化から抜けたかったら

$ deactivate

と打てば抜けられます。

4. 余談

良くPythonのアプリとかを配布している人たちは、pip freezeの結果を requirement.txt みたいなのに吐き出しておいて必要なパッケージを羅列したものを併せて配布してくれています。

$ pip freeze > requirement.txt

パッケージが一覧されたテキストを元に一気にインスコするには

$ pip install -r  requirement.txt

とします。

そういうアプリを動かしたい時の手順としては、

1. アプリをDL
2. 仮想環境を作る  (virtualenv ~/.env)
3. 仮想環境をactivateする  (source ~/.env/bin/activate)
4. 必要なパッケージをインスコする (pip install -r requirement.txt)
5. アプリを起動したり、いじいじしたりする。

みたいな手順を踏むのが良さそうです。

今日も息切れ気味なので、さらにvirtulenvを楽に使うためのvirtualenvwrapperについては後日書こうかと。virtualenvの仕組みに関しては下記エントリを参考にしました。m( _ _ )m

virtualenv - Doge log

ではではアデュー