3

zc.recipe.egg を使用していくつかのコンソール スクリプトを生成した後、他のすべてがインストールされた後、これらのスクリプトをビルドアウトによって実際に自動的に実行したいと考えています。

私は z3c.recipe.runscript ビルドアウト レシピを知っていますが、私の知る限り、追加のパスを設定する (パッケージのインポートが失敗しないようにする) か、生成された Python (スクリプト) モジュールを実行する必要がありますが、どちらも機能していないようです。の。

z3c.recipe.runscript、または他の方法でこれを達成する方法はありますか?

4

1 に答える 1

5

ビルドアウト スクリプトから任意のコマンドを実行するには、次を使用しますplone.recipe.command

[buildout]
parts = 
    some_console_script
    command

[some_console_script]
recipe = zc.recipe.egg:scripts
scriptname = some_console_script
eggs =
    foo_egg
    bar_egg
scripts = console_entry_point=${:scriptname}

[command]
recipe = plone.recipe.command
command = ${buildout:bin-directory}/${some_console_script:scriptname}
update-command = command

commandパーツは実行ごとにコンソール スクリプトを実行するようになりました (インストールcommand時に、update-command後続の実行ごとに更新を通知するため)。

これは、ビルドアウトの最後まで実行されるとは限りません。セクションのすべての依存関係が実行された後に実行されます[command]が、他のセクションは後で実行できますcommand

buildout 実行の最後にコマンドを実行する必要がある場合は、代わりに buildout 拡張機能を作成する必要あります。拡張機能は、ビルドアウト実行の開始時 ( zc.buildout.extension) と終了時 ( ) にロードされるエントリ ポイントを定義できます。zc.buildout.unloadextensionどちらのエントリ ポイントにも、buildoutオブジェクトが引数として渡されます。そのようにコマンドを最後に実行する拡張機能を作成するのは簡単です。

于 2013-05-06T17:07:36.120 に答える