构建:通过mercurial包含另一个Python项目?

构建:通过mercurial包含另一个Python项目?,python,mercurial,buildout,Python,Mercurial,Buildout,我有一个名为Foo/的项目,它有buildout.cfg和setup.py。现在有另一个项目叫做Bar/。。其中也包含buildout.cfg和setup.py。由于Bar/依赖于各种Python模块,因此它在setup.py中有install_requires=['lxml','SQLAlchemy']。Foo/取决于Bar/ 但是Bar/还没有发布。如何在Foo的构建中包含Bar/以便导入Bar的模块、lxml和SQLAlchemy 假设Bar/使用mercurial作为其版本控制系统 我的

我有一个名为Foo/的项目,它有buildout.cfg和setup.py。现在有另一个项目叫做Bar/。。其中也包含buildout.cfg和setup.py。由于Bar/依赖于各种Python模块,因此它在setup.py中有install_requires=['lxml','SQLAlchemy']。Foo/取决于Bar/

但是Bar/还没有发布。如何在Foo的构建中包含Bar/以便导入Bar的模块、lxml和SQLAlchemy

假设Bar/使用mercurial作为其版本控制系统

我的尝试:没有多大作用。它只克隆存储库,但不会在Bar/setup.py中自动获取安装所需的代码,并将Bar/自身添加到sys.path

实际示例:下面是my buildout.cfg的样子Bar==mercurialrecipe包:

[buildout]
parts = ... pyrtm ...
develop = . parts/pyrtm
eggs = pyrtm

[pyrtm]
recipe = mercurialrecipe
repository = http://bitbucket.org/srid/pyrtm

...

这不起作用,因为sys.path不包含parts/mr中本地克隆的mercurialrecipe的路径,并且没有安装parts/mr/setup.py中的依赖项。

如果可以签出/克隆存储库,则可以像往常一样开发python模块:

[buildout]
...
develop = src/Bar
eggs = Bar

您正在使用mercurial recipe对您想要用作开发鸡蛋的mercurial recipe进行mercurial检查。。。。这里面有一个巨大的循环依赖


Buildout需要mercurial配方来运行mr部件。所以它从pypi那里得到了配方。它还不知道配方是否真的会下载配方。

我发现解决这个问题的唯一方法是向buildout添加额外的路径:

[buildout]
parts = ... pyrtm ...
develop = . parts/pyrtm
eggs = pyrtm

extra-paths = parts/pyrtm/src
# or wherever your pyrtm folder 
# could as well be extra-paths = pyrtm/ 
# if you your code is on same path as buildout.cfg.

[pyrtm]
recipe = mercurialrecipe
repository = http://bitbucket.org/srid/pyrtm

希望这有帮助。

另一个用户也面临同样的问题:不适合我。如果有帮助的话,我已经用buildout.cfg的部分内容更新了这个问题。如果我在上面的示例中,在相应的部分下面列出了Bar egg mercurialrecipe,那么buildout将从PyPI下载它,而不是从本地副本下载。嗯。。。开发工具应该能解决这个问题。奇怪的我这里缺少一些更好的细节,我必须尝试一下。我只使用mercurialrecipe作为示例。这个问题是普遍存在的,其他包也会出现。无论如何,为了避免这种混淆,我修改了上面的示例代码。