pythonbrewで構築するPython環境 その2

その1はこちら
pythonbrewってなんぞ?という人は、こちらも併せて見ると良いかもです。

その2では、pythonbrew-0.9で追加したbuildoutとvenvコマンドについて解説します。

概要

buildout : buildoutをラップしたコマンド。
venv : virtualenvとvirtualenvwrapperをラップしたコマンド。

buildout

pythonbrewの管理下にあるPythonを使って、buildoutを実行するコマンド。
bootstrap.pyのダウンロードから./bin/buildoutまで、多少面倒な部分を代わりにやってくれます。

zc.buildoutを知っていれば、とりあえず使用例を見れば大体なにをやっているか分かると思います。
以下は、buildout.cfgの置いてあるディレクトリprojへ移動し、pybrew buildoutを実行したコマンドの履歴。

  
$ cd proj  
$ ls  
buildout.cfg  
$ pybrew buildout  
Using Python-2.7.2  
Downloading bootstrap.py as /Users/utah/.pythonbrew/dists/bootstrap.py  
######################################################################## 100.0%  
Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.19.tar.gz  
Extracting in /var/folders/hO/hO8hMlByFNqghdPKssrR7U+++TI/-Tmp-/tmpT0oTyw  
Now working in /var/folders/hO/hO8hMlByFNqghdPKssrR7U+++TI/-Tmp-/tmpT0oTyw/distribute-0.6.19  
Building a Distribute egg in /var/folders/hO/hO8hMlByFNqghdPKssrR7U+++TI/-Tmp-/tmpCuNaFk  
/var/folders/hO/hO8hMlByFNqghdPKssrR7U+++TI/-Tmp-/tmpCuNaFk/distribute-0.6.19-py2.7.egg  
...  

-pオプションでPythonのバージョンを指定することもできるます。
pythonbrewで完結できるのが楽でいいですね。

venv

こちらは、pythonbrewの管理下にあるPythonを元に独立したPython環境を作ったり消したり使ったりするコマンドです。
中身は、virtualenvvirtualenvwrapperをラップしたもので、大したことはやってません。

virtualenvwrapperがまだPython3に対応していなくて、予めPython2系をインストールしていないと使えない制限があります。

仮想環境は、インストールされているPythonのバージョンごとにワークディレクトリを分けて作られます。
ここらへんは、rvmのgemsetっぽくしてみた感じです。

使い方は、役割ごとに箇条書きにしました。
事前にpythonbrewでPython-2.7.2とPython-3.2をインストールしているものと仮定しています。
あと独立したPythonの環境のことを仮想環境と呼んでます。

・仮想環境の作成
デフォルトでは、現在使用中のPythonを元に仮想環境が作られます。
構文: pybrew venv create プロジェクト名

  
$ pybrew venv create hoge  
# Create `hoge` environment into /Users/utah/.pythonbrew/venvs/Python-2.7.2  
Already using interpreter /Users/utah/.pythonbrew/pythons/Python-2.7.2/bin/python  
New python executable in hoge/bin/python  
Installing setuptools............done.  
Installing pip...............done.  
...  

-pオプションで、指定のPythonを元にした仮想環境が作られます。

  
$ pybrew venv create hoge3 -p 3.2  
# Create `hoge3` environment into /Users/utah/.pythonbrew/venvs/Python-3.2  
Running virtualenv with interpreter /Users/utah/.pythonbrew/pythons/Python-3.2/bin/python  
New python executable in hoge3/bin/python  
...  

・仮想環境の確認
いままでに作成した仮想環境を一覧にして表示します。
デフォルトでは、現在使用中のPythonを元にした仮想環境の一覧が表示されます。
構文: pybrew venv list

  
$ pybrew venv list  
# virtualenv for Python-2.7.2 (found in /Users/utah/.pythonbrew/venvs/Python-2.7.2)  
hoge  

-aオプションで、全ての仮想環境の一覧が表示されます。

  
$ pybrew venv list -a  
# virtualenv for Python-2.7.2 (found in /Users/utah/.pythonbrew/venvs/Python-2.7.2)  
hoge  
# virtualenv for Python-3.2 (found in /Users/utah/.pythonbrew/venvs/Python-3.2)  
hoge3  

・仮想環境を使用
作成した仮想環境を使うってそのまんまですね。
virtualenvwrapperでいうところのworkon hogeをします。
構文: pybrew venv use プロジェクト名

  
$ pybrew venv use hoge  
# Using `hoge` environment (found in /Users/utah/.pythonbrew/venvs/Python-2.7.2)  
# To leave an environment, simply run `deactivate`  
...  
  
$ pybrew venv use hoge3 -p 3.2  
# Using `hoge3` environment (found in /Users/utah/.pythonbrew/venvs/Python-3.2)  
# To leave an environment, simply run `deactivate`  
...  

・仮想環境の削除
作成済みの仮想環境を消します。
構文: pybrew venv delete プロジェクト名

  
$ pybrew venv delete hoge  
# Delete `hoge` environment in /Users/utah/.pythonbrew/venvs/Python-2.7.2  

おわり

pythonbrewとbuildout, virtualenvの親和性が微妙に上がった気がします。
venvは、rvmのgemsetを目指してそれっぽいものが出来たかなーと思いつつ。
フィードバックは、以下までよろしくお願いします。
utahta/pythonbrew - GitHub