1

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

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

假设 Bar/ 使用 mercurial 作为其修订控制系统。

我的尝试Buildout mercurial recipe没有多大作用。它仅克隆存储库,但不会自动获取 Bar/setup.py 中 install_requires 的鸡蛋并将 Bar/ 本身添加到 sys.path。

实际示例:这是我的 buildout.cfg 的样子(Bar == mercurialrecipe 包):

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

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

...

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

4

3 回答 3

1

我发现解决此问题的唯一方法是向 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

希望这可以帮助。

于 2011-01-31T19:21:06.687 回答
0

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

[buildout]
...
develop = src/Bar
eggs = Bar
于 2010-01-27T23:43:45.830 回答
-1

您正在使用 mercurial recipe 对要用作开发蛋的 mercurial 配方进行 mercurial checkout ......那里有一个巨大的循环依赖关系。

Buildout 需要 mercurial 配方来运行“先生”部分。所以它从 pypi 中获取了配方。它还不知道配方会真正下载配方。

于 2010-01-28T09:28:57.670 回答