buildout入門(エキスパートPythonプログラミング読書会09に参加してきました)
エキスパートPythonプログラミング読書会09 : ATNDに参加してきました
主催の清水川さん、会場提供いただいた アスキーメディアワークス様ありがとうございます。
今回の話題はbuildoutでした。簡単に自分用にメモをまとめておきます。
# 2011.02.19 id:shimizukawaさんからのご指摘でdefault.cfgの書き方を修正
buildoutってなんぞ
pythonの構成管理ツール。
こんな感じで実行する。
$ cd /tmp $ curl -O "http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py" $ cd ~/hoge/ $ python /tmp/bootstrap.py init --distribute
ってやるとbuildout.cfgっていうファイルができる。
buildout.cfgは要はWindowsアプリなどで使われるIniファイル。
こんな感じで書く
[buildout] parts = demo [demo] recipe = zc.recipe.egg eggs = bucho interpreter = py
buildout.cfgを編集したら以下コマンドを実行すると指定したファイルを持ってきて環境を作ってくれる
$ bin/buildout $ bin/py
bin/pyを実行するとIndex of Packages : Python Package Indexパッケージが使えるようになる
本ではzc.buildoutをeasy_installいれているが、bootstrap.pyを使うと複数バージョンのzc.buildoutが試せるのでこちらを使った方がベター。
bootstrap.pyはzc.buildoutを持ってくる。zc.buildout はそのeggsフォルダに格納される。
また、setuptoolsは更新が止まっているのでかならずdistibuteを使うようにする。
なお、bootstrap.pyをたたいたpythonがその後の環境で使われるので、pythonバージョンごとの環境を作ることも可能。
共通の設定
~/buildout/default.cfgファイルを作ると、bin/buildout実行時に必ず参照される。
共通の設定はここに書いておくと管理が楽。
download,eggsをキャッシュする
[buildout] index = http://b.pypi.python.org/simple eggs-directory = /User/xxx/.buildout/eggs # pathを指定。~は使えない download-cache = /User/xxx/.buildout/downloads # pathを指定。~は使えない newest = false # buildout実行時に最新のパッケージをとりにいかない
コマンドでnewestを指定することも可能.'-n'オプションを使う
$ buildout -n
virtualenvの--no-site-packagesっぽいことをする
実行パスからsite-packagesをのぞいて、箱庭環境を作る.
recipeでz3c.recipe.scripts 1.0.1 : Python Package Indexを使う。
[buildout] parts = demo [demo] recipe = z3c.recipe.scripts eggs = bucho interpreter = py include-site-packages=false exec-sitecustomize = false
Index of Packages : Python Package Indexでは"exec-sitecustomize=false"を必ずつけるべしって
書いてあるけど、なんで必要なのかはわからない。
別にtrueにしてもsite-packages/sitecustomize.pyが適用される訳ではないみたい。
まとめ
今までvirtualenvwrapper + pipを中心に開発環境を作ってきましたが、同じ環境を何度も作る
必要があるときはなるべくbuildoutを使っていこうと思います。
今は機会がないですが、複数人でpythonを使って開発を行う際にも環境を作るのが
楽になりそうですね。