Buildout和zc.recipe.egg:scripts:生成解释器时的奇怪行为

时间:2015-06-22 08:30:04

标签: python buildout

我使用zc.recipe.egg:scripts生成bin/python脚本,该脚本可以导入我的开发蛋(在基于自定义构建的项目中)。我的buildout.cfg看起来像这样:

[buildout]
develop =
    develop-eggs/MyPackage.MyLib
    develop-eggs/MyPackage.MyLib2
    develop-eggs/MyPackage.MyLib3
parts =
    interpreter
    [...]

[interpreter]
recipe = zc.recipe.egg:scripts
interpreter = python
eggs =
    MyPackage.MyLib
    MyPackage.MyLib2
    MyPackage.MyLib3

所有工作正常(一如既往),直到我添加MyPackage.MyLib3。这个不希望被包括在内。我检查了setup.pybuildout.cfg近10次,我开始调查zc.recipe.egg:script

我发现的是......奇怪的。这是我第一次看到这一点,而且我不知道发生了什么。

zc.buildout-2.1.1-py2.6.egg/zc/buildout/easy_install.py egg文件行1169中,我添加了两条小行以查看发生了什么:

import pdb
pdb.set_trace()

它有效。这次脚本生成得很好,我可以导入MyPackage.MyLib3。我试图删除pdb行,但同样,脚本不包含MyPackage.MyLib3我在PDB界面上没有做任何事情(只是一些下一个继续)。

测试3次,相同3次:如果我编辑文件zc.buildout-2.1.1-py2.6.egg/zc/buildout/easy_install.py,则生成bin/python脚本;但如果我撤消编辑,则脚本不包含develop-egg MyPackage.MyLib3

你对它的来源有什么想法吗?也许这不是生成Python脚本的正确方法?

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。

实际上,生成一个名为python的解释器并不是一个好主意:其他一些脚本也会生成一个特定的站点包解释器。然后我刚刚更改了我的interpreter部分,如下所示:

[interpreter]
recipe = zc.recipe.egg:scripts
interpreter = py # avoiding conflicts with some other interpreters
eggs =
    [...]

现在我用bin/py执行我的脚本。