Buildout: Включая еще один проект Python через Mercurial? - PullRequest
1 голос
/ 28 января 2010

У меня есть проект с именем Foo /, в котором есть buildout.cfg и setup.py. Теперь есть еще один проект под названием Bar / .., который также имеет buildout.cfg и setup.py. Поскольку Bar / зависит от различных модулей Python, в файле setup.py содержится install_requires=['lxml', 'SQLAlchemy']. Foo / зависит от бара /.

Но у Bar / еще нет релиза. Как включить Bar / в сборку Foo, чтобы я мог импортировать модули Bar, lxml и SQLAlchemy?

Предположим, что Bar / использует Mercurial в качестве своей системы контроля версий.

Моя попытка : Создание рецепта ртути мало что дает. Он только клонирует репозиторий, но не автоматически получает яйца для install_requires в Bar / setup.py и добавляет 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 (в parts/mr), а зависимости (от parts/mr/setup.py) не установлены.

Ответы [ 3 ]

1 голос
/ 31 января 2011

Единственный способ обойти эту проблему - добавить дополнительные пути в 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

Надеюсь, это поможет.

0 голосов
/ 28 января 2010

Вы используете ртутный рецепт для создания ртутного извлечения ртутного рецепта, который вы хотите использовать в качестве яйца разработки ... Там огромная круговая зависимость.

Buildout нужен ртутный рецепт для запуска части "mr". Таким образом, он берет рецепт из Pypi. Еще не известно, что рецепт действительно загрузит рецепт.

0 голосов
/ 28 января 2010

Если вы можете проверить / клонировать репозиторий, то вы можете разработать модуль python как обычно:

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