使用zc.recipe.egg生成一些控制台脚本后,我希望在安装完其他所有内容后,这些脚本实际上会自动运行。
我知道z3c.recipe.runscript扩展配方,但是AFAIK,它需要设置额外的路径(因此包导入不会失败)或执行生成的Python(脚本)模块,它们似乎都不是能够。
有没有办法用z3c.recipe.runscript或其他方式实现这一目标?
答案 0 :(得分:4)
要从buildout脚本运行任意命令,请使用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
以表示每次后续运行的更新。)
这不一定在buildout结束时一直运行。它在[command]
部分的所有依赖项运行后运行,但其他部分仍可在command
之后运行。
如果绝对必须在buildout运行结束时运行命令,则需要创建buildout extension。扩展可以定义要在buildout运行的开始(zc.buildout.extension
)和结束(zc.buildout.unloadextension
)加载的入口点。两个入口点都作为参数传递buildout
对象。编写一个以最终方式运行命令的扩展名应该是微不足道的。