3

在使用 zc.recipe.egg 生成一些控制台脚本后,我希望这些脚本在安装完其他所有内容后由 buildout自动运行。

我知道 z3c.recipe.runscript 构建配方,但是 AFAIK,它需要设置额外的路径(因此包导入不会失败)或执行生成的 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.

如果您绝对必须在构建运行结束时运行命令,则需要创建一个构建扩展zc.buildout.extension扩展可以定义要在构建运行的开始 ( ) 和结束 ( )加载的入口点zc.buildout.unloadextension。任一入口点都将buildout对象作为参数传递。编写一个以这种方式在最后运行命令的扩展应该是微不足道的。

于 2013-05-06T17:07:36.120 回答