我的项目中有一个名为./foo
的目录,其中包含一个__init__.py
文件,其中包含一个名为main()
的方法。
我想使用buildout来创建一个执行main()
方法的可执行文件(例如:./bin/foo
)。我使用以下buildout.cfg
部分在我的目录结构的“顶层”实现了类似的功能:
[bar]
recipe = zc.recipe.egg
eggs = ${buildout:eggs}
entry-points = bar=bar:main
这适用于我的./bar.py
文件,可创建可执行文件./bin/bar
。我似乎无法让它适用于./foo/__init__.py
文件。
我怎样才能实现上述目标?
答案 0 :(得分:1)
通常,python通过python路径通过sys.path
变量查找模块和包。当buildout
在bin/
目录中创建脚本时,它会添加到sys.path
变量,列出给定部分的所有鸡蛋。
为了让python找到你的./bar.py
模块或你的./foo
包,当前目录也需要部分python路径。我发现非常令人惊讶的是,找到了bar.py
的{{1}}模块,而找不到bin/bar
包。很明显,这两个部分的python路径是不同的。您可以查看生成的./foo
和bin/bar
脚本的顶部,以查看已添加到bin/foo
的路径。
在任何情况下,您都可以使用sys.path
部分中的sys.path
选项手动添加extra-paths
的其他路径。其中列出的任何路径都将以生成的脚本结束。只需将其设置为zc.recipe.egg
即可:
${buildout:directory}