我可以在buildout后自动运行脚本吗?

时间:2013-05-06 16:41:45

标签: python buildout

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

我知道z3c.recipe.runscript扩展配方,但是AFAIK,它需要设置额外的路径(因此包导入不会失败)或执行生成的Python(脚本)模块,它们似乎都不是能够。

有没有办法用z3c.recipe.runscript或其他方式实现这一目标?

1 个答案:

答案 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部分现在将在每次运行时运行控制台脚本(安装时commandupdate-command以表示每次后续运行的更新。)

这不一定在buildout结束时一直运行。它在[command]部分的所有依赖项运行后运行,但其他部分仍可在command之后运行。

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