文書操作
pasterを使って素早くeggとパッケージを作る
This How-to is intended for:
Developer
pasterコマンドを使って、setuptools、そしてeggのレイアウトに適した新しいパッケージを素早く簡単に作る方法を紹介します。
Zope 2.10(あるいはZope 2.9でpythonプロダクトを使っている場合)ではProductsディレクトリだけではなく、$PYTHONPATHにパッケージをインストールす るZopeプロダクトを作ることができます。さらにZope 2用のものではないが他のプロダクトが依存するようなパッケージを作ることもできます。
ZopeとPloneはpython eggへの依存度をだんだんと高めている傾向にあります。eggはソースコードだけでなく、便利なメタデータや自動的に依存関係を管理するエクステンショ ンを含んでいます。しかしながらこれをサポートするためには、いくつかの「決まり文句」をコードに追加する必要があります。
これらの「決まり文句」を簡単に生成するためにZopeSkelを使うことができます。これはPloneのための決まり文句を生成するPasteScriptテンプレートです。
セットアップ
ZopeSkelをインストールするためには、まずシステムにeasy_installをインストールする必要があります。もしまだインストールしていなかったら、ez_setup.pyをダウンロードし、下記のように実行します。
$ wget peak.telecommunity.com/dist/ez_setup.py $ python ez_setup.py
それからZopeSkelのeggと、依存関係にあるパッケージ(PasteScriptなど)をインストールするために、下記のようにします。
$ easy_install -U ZopeSkel
これによってpythonのバイナリが実行される場所にpasterコマンドがインストールされます。インストール後にpasterコマンドが見つ からない場合は、easy_installの出力をよく見てみてください。もし$PATHにpasterが無いようであれば、$PATHにシンボリックリ ンクを作っておきましょう。
新しくeggを作る
これでいろいろなタイプのパッケージを作ることができるようになります。下記のようなコマンドを実行すると利用可能なテンプレートが表示されます。
$ paster create --list-templates Available templates: basic_namespace: A project with a namespace package basic_package: A basic setuptools-enabled package nested_namespace: A project with two nested namespaces. paste_deploy: A web application deployed through paste.deploy plone: A Plone project plone2_theme: A Theme for Plone 2.1 & Plone 2.5 plone3_theme: A Theme for Plone 3 plone_app: A Plone App project
標準的なsingle-levelのPloneテンプレートを生成するためには下記のようにします。
$ paster create -t plone
質問事項に答えると必要な決まり文句とメタデータを含んだ新しいディレクトリができます。同様にplone.app.somethingのようなtwo-levelなパッケージについても
$ paster create -t plone_app
のようにすればOKです。
他にもたとえば、David Conventの作ったDIYPloneStyleに基づいた新しいテーマを作ろうと思ったら
$ paster create -t plone3_theme
とします。
インスタンスにeggを追加する
新しく作ったパッケージをインストールしたり、eggを作ってCheeseshopなどにアップロードするためには、setup.pyを使うことができます。これについての詳細はsetuptoolsのドキュメントを参照してください。
さらに詳しく知りたいときにはbuildoutチュートリアルを参照してください。
Zopeにパッケージを見つけさせる
Productsディレクトリはプロダクトを登録するためにスタートアップ時にZopeにスキャンされます。逆にProductsディレクトリの外 にあるプロダクトやパッケージはスキャンされません($PYTHONPATH全体をスキャンするのはよいアイデアではないでしょう)。
他のパッケージやプロダクトから使おうと思うような通常のpythonパッケージを作るだけであれば何もする必要はありませんが、プロダクトが必要 であったり(つまり"Is this a Zope 2 product?"に対して"Yes"と回答したり)、Zopeのスタートアップ時にZope3の.zcmlファイルを読み込む必要があるのであれば、下 記のようにします。
- $INSTANCE_HOME/etc/package-includesに、my.package-configure.zcmlと いった名前でファイルを保存します。このファイルには<include package="my.package" />という1行が書かれています。これによってZopeは$PYTHONPATHのmy.packageというパッケージを探し出し、このパッケー ジのconfigure.zcmlを実行します。
- Productsディレクトリにあるプロダクトのconfigure.zcml に<include package"my.package" />と書きます。FiveはProductsディレクトリにあるすべてのプログラムのZCMLを確認しますので、これによってパッケージが読み込ま れるでしょう。
- etc/site.zcmlに<include package"my.package" />と書きます。これによってスタートアップ時に読み込まれます。
zc.buildoutで管理する方法についての詳細は、buildout tutorialを参照してください。
*Zope 2.10はPython 2.4を使いますが、システムにインストールされているPythonが2.5の場合、easy_installなどでインストールされるパッケージが (2.5ではなく)2.4のsite-packagesにインストールされることを確認しておいた方がよいでしょう。
see also:
-
Create new eggs and packages quickly with paster
- How to use the paster command to create new packages with proper setuptools- and egg-compliant filesystem layout quickly and easily.

