1

./foo私のプロジェクトには、__init__.pyという名前のメソッドを含むファイルを含む名前のディレクトリがありますmain()

buildout を使用して、メソッドを実行する実行可能ファイルを作成したいと思いますmain()(例: ./bin/foo)。次のbuildout.cfgセクションを使用して、ディレクトリ構造の「最上位」で同様のことを達成しました。

[bar]
recipe = zc.recipe.egg
eggs = ${buildout:eggs}
entry-points = bar=bar:main

これは私のファイルではうまく機能し./bar.py、実行可能ファイルを作成し./bin/barます。./foo/__init__.pyファイルに対して機能させることができないようです。

どうすれば上記を達成できますか?

4

1 に答える 1

1

通常、python は、変数を介して、python パスを介してモジュールとパッケージを検索しsys.pathます。ディレクトリにスクリプトを作成すると、変数に追加されbuildout、指定された部分のすべての卵がリストされます。bin/sys.path

./bar.pyPython がモジュールまたは./fooパッケージを見つけるには、現在のディレクトリも Python パスの一部である必要があります。パッケージが見つからないのにモジュールが見つかったことは非常に驚くべきことです。明らかに、両方の部分の python パスが異なります。生成されたおよびスクリプトの上部を見ると、 に追加されたパスを確認できます。bar.pybin/bar./foobin/barbin/foosys.path

いずれの場合でも、パーツsys.pathextra-pathsオプションを使用して追加のパスを手動で追加できますzc.recipe.egg。そこにリストされているパスはすべて、生成されたスクリプトになります。これを次のように設定する${buildout:directory}だけで十分です。

[foo]
recipe = zc.recipe.egg
eggs = ${buildout:eggs}
extra-paths = ${buildout:directory}
entry-points = foo=foo:main
于 2011-05-04T19:24:28.250 に答える