在使用 zc.recipe.egg 生成一些控制台脚本后,我希望这些脚本在安装完其他所有内容后由 buildout自动运行。
我知道 z3c.recipe.runscript 构建配方,但是 AFAIK,它需要设置额外的路径(因此包导入不会失败)或执行生成的 Python(脚本)模块,这两者似乎都没有能力的。
有没有办法用 z3c.recipe.runscript 或其他方式来完成这个?
要从构建脚本运行任意命令,请使用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
对象作为参数传递。编写一个以这种方式在最后运行命令的扩展应该是微不足道的。