ドキュメントアクション
buildoutで開発0: zc.buildout で環境を作る
buildout はPythonベースのビルドシステムです。パーツという単位でアプリケーションを 作成、組み立て、配置などを行い、非Pythonベースのものも構築は可能です。
ということで、これまでbuildoutに関するいくつかのエントリを書いて来ましたが、そもそもbuildoutって何?ということについて書きます。
仮想環境、またはサンドボックス(SandBox)としては VirtualEnv が有名ですが、 buildout (正式には zc.buildout)は冒頭に書いたように、ビルドシステムと言う方が適切です。buildoutはVirtualEnvと組み合わせて使うことも出来ますが、buildout単体で使用しても、既存のPython環境を汚さずにegg類をインストールして使うことが出来ます。
はじめよう
まずは仮想環境的に使う例です。bootstrap.pyというのを取ってきて、init引数を付けて実行しています。このとき使用したpythonがこれ以降使用されるpythonのインタプリタになります:
$ mkdir testdir $ cd testdir $ wget "http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py" $ python-2.6 bootstrap.py init
この時点でディレクトリ構成が以下のようになります:
/tmp
+-- testdir
+-- bootstrap.py
+-- buildout.cfg
+-- bin/
+-- develop-eggs/
+-- eggs/
+-- parts/
同じディレクトリに buildout.cfg ファイルが出来ているので以下の内容で更新します:
[buildout]
parts = env
[env]
recipe = zc.recipe.egg
eggs =
docutils
sphinx
PIL
interpreter = python
最後に環境をビルドします:
$ bin/buildout
この時点でディレクトリ構成が以下のようになりました:
r:/
+-- testdir
+-- .installed.cfg
+-- bootstrap.py
+-- buildout.cfg
+-- bin
| +-- buildout
| +-- python
| +-- sphinx-autogen
| +-- sphinx-build
| +-- sphinx-quickstart
+-- develop-eggs/
+-- eggs/
| +-- docutils-0.6-py2.6.egg/
| +-- jinja2-2.2.1-py2.6.egg/
| +-- pil-1.1.7b1-py2.6-win32.egg/
| +-- Pygments-1.1.1-py2.6.egg/
| +-- Sphinx-0.6.3-py2.6.egg/
| +-- zc.buildout-1.4.1-py2.6.egg/
| +-- zc.recipe.egg-1.2.2-py2.6.egg/
| +-- setuptools-0.6c11-py2.6.egg
+-- parts/
これでdocutils,sphinx,PILがインストールされたPyhton環境が出来ました。 bin/python を使えば、docutils,sphinx,PIL,その他これらが依存しているパッケージが使用できる環境で起動します。
ということで、 bin/python でインタプリタを起動すると以下のようになります:
$ bin/python.exe >>> import sys >>> from pprint import pprint >>> pprint(sys.path) ['r:\\testdir\\eggs\\docutils-0.6-py2.6.egg', 'r:\\testdir\\eggs\\sphinx-0.6.3-py2.6.egg', 'r:\\testdir\\eggs\\pil-1.1.7b1-py2.6-win32.egg', 'r:\\testdir\\eggs\\jinja2-2.2.1-py2.6.egg', 'r:\\testdir\\eggs\\pygments-1.1.1-py2.6.egg', 'R:\\testdir\\bin', 'c:\\Develop\\Python26\\lib\\site-packages\\virtualenv-1.3.3-py2.6.egg', 'c:\\Develop\\Python26\\lib\\site-packages\\setuptools-0.6c9-py2.6.egg', 'c:\\Develop\\Python26\\lib\\site-packages\\ipython-0.10-py2.6.egg', 'c:\\Develop\\Python26\\python26.zip', 'c:\\Develop\\Python26\\DLLs', 'c:\\Develop\\Python26\\lib', 'c:\\Develop\\Python26\\lib\\plat-win', 'c:\\Develop\\Python26\\lib\\lib-tk', 'c:\\Develop\\Python26', 'c:\\Develop\\Python26\\lib\\site-packages', 'c:\\Develop\\Python26\\lib\\site-packages\\win32', 'c:\\Develop\\Python26\\lib\\site-packages\\win32\\lib', 'c:\\Develop\\Python26\\lib\\site-packages\\Pythonwin'] >>>
VirtualEnvとの比較
VirtualEnvは基本環境の複製を作って、そこにpythonインタプリタやsite-packageなどを複製します。VirtualEnvで環境を作る時に、元のsite-packagesを含めないように出来ます。buildoutでは元の環境を含めない仮想環境を作ることは(多分)出来ません。あくまで基本環境への追加という形式になります(多分)。
以下のように言いたいところですが言い過ぎ?
buildout = VirtualEnv + easy_install + その他手作業 - 仮想環境化
自分は構築手順を覚えておくのが苦手だし、手順に従って1ステップずつ環境を作るのも面倒なタチなのでbuildoutは非常に便利だと思っています。
しかし、VirtualEnvのactivate等で環境を切り替える概念はbuildoutには無いので、その機能が欲しい場合にはVirtualEnv環境上でbuildoutを使えば良いと思います。
その他
buildoutは内部的にeasy_installを使用しますが、代わりに pip や distribute を使うことも出来ます。また、簡単なrecipeを作ればその他のパッケージングシステムを使うことも出来ると思います。
buildoutで開発1: WSGIアプリをeggで作る
サイズ
18515
-
File type
text/x-rst
buildoutで開発2: buildoutで環境を整える
サイズ
28306
-
File type
text/x-rst
buildoutで開発3: easy_install できるように公開する
サイズ
33188
-
File type
text/x-rst
buildoutで開発 4: mod_wsgiからegg指定でアプリ起動する
サイズ
7939
-
File type
text/x-rst
buildoutで開発5: ファイル構成の整理とpaster-template対応
サイズ
17228
-
File type
text/x-rst
buildoutで開発 番外編: eggにrevision番号が付かない
サイズ
4416
-
File type
text/x-rst
buildoutで開発 番外編2: buildoutでDeliverance環境を作る
サイズ
8512
-
File type
text/x-rst
- カテゴリ
-
python
- 固定リンク
- ¦
- コメント (2)
- ¦
- トラックバック (0)
- トラックバック用URL:
- http://www.freia.jp/taka/blog/677/tbping
- このBlogについて
- Zope, Python, FreeBSD, その他色々について。つまり日記か。
- 最近のエントリ
- Sphinx+翻訳Hack-a-thon2010.09に参加しアクセンスさんに初侵入しました taka 2010年09月06日
- XP祭り2010実行委員長の基調LTレポート taka 2010年09月05日
- XP祭り2010に登壇しました「Pythonでアジャイル開発サイクル 2010ver.」 taka 2010年09月04日
- cmscomさん主催の開発合宿に参加してきました taka 2010年08月29日
- BPStudy#36 に参加しました Jiemamyとbeproud-bot君の紹介 taka 2010年08月27日
- 最近のコメント
- Re:Zope2 ドキュメントを Sphinx でビルドする手順 xiangxiang 2010年09月03日
- pyreadline-1.6対応 しみずかわ 2010年07月18日
- pyreadline-1.6対応 しみずかわ 2010年07月18日
- Re:日本語キーボードから英語キーボードへ TAZO 2010年07月15日
- Re:COREBlog2をPlone3で動かすための修正: portletのカレンダー akiko 2010年06月30日
- 最近のトラックバック
- [python] エキスパートPythonプログラミング 彷徨えるフジワラ 2010年05月30日
- ファミリーコンサート 2009 終了 takalog 2009年11月10日
- Tools@System @note (PukiWiki/TrackBack 0.4) 2009年07月12日
- Windowsのコマンドプロンプトをフリーソフトで便利にする ナレッジエース 2009年05月31日
- plone研究会(2009-05) takalog 2009年05月22日
- カテゴリ
- Agile(XP) (2)
- Event (15)
- Pattern (0)
- その他 (10)
- Zope (11)
- Memo (0)
- 食 (3)
- python (21)
- Programming (1)
- Game (0)
- OO (0)
- Unix (0)
- WZ (0)
- work (0)
- Plone (11)
- Windows (1)
- IT-PC (4)
- 自転車 (0)
- TurboGears (0)
- ダーツ (0)
- JavaScript (0)
- 旅行 (1)
- Web (4)
- セキュリティー (1)
- Django (0)
- LDAP (0)
- データベース (0)
- vi/vim/gvim (0)
- C/C++ (0)
- ボドゲ (0)
- RoR (2)
- pyspa (1)
- スタトレ (0)
python -Sすれば含めないように作ることはできます。
但し、-Sは生成されるスクリプトには引き継がれないので、毎回指定しないといけなくなり、実用上とっても不便です。
ですから、virtualenvは必須だと考えておいた方が楽です。
buildoutはパッケージの追加のために別環境を作る程度には分離できるので、複数のbuildoutで同じvirtualenv環境を使い回すのは構わないです。
おお、補足ありがとうございます。-S なんてあったんですね。
結果的には、VirtualEnv使っとけ、と。VirtualEnvは色々考えなくて良くなるので楽ですよね。