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

Buildout and zc.recipe.egg:scripts : strange behavior while generating an interpreter

我使用 zc.recipe.egg:scripts 来生成一个 bin/python 脚本,该脚本将能够导入我的 develop-eggs(在基于自定义构建的项目中)。我的 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 行中,我添加了 2 小行以查看发生了什么:

import pdb
pdb.set_trace()

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

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

你知道它的来源吗?也许这不是生成 Python 脚本的正确方法?

我发现了问题。

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

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

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