Файл setup.py
в пакете, который я поддерживаю, использует код из другого пакета для создания расширений:
from setuptools import setup, find_packages
from mydependence import build_ext
...
setup(
name='mypackage',
version='1.0.0',
...
setup_requires = [
'mydependence', # is this being checked properly?
],
...
install_requires = [
'mydependence',
],
...
)
Я хотел бы собрать текущий пакет с помощью zc.buildout
, поэтому я создаю простой файл buildout.cfg
, например:
[buildout]
parts = python
eggs = mypackage
[python]
recipe = zc.recipe.egg
interpreter = python
eggs = ${buildout:eggs}
К сожалению, это не работает, как я ожидаю - когда я выполняю ./bin/buildout
и setup.py
читается, он жалуется, что mydependence
не найден. Когда buildout запускает мой setup.py
, его sys.path
ничего не знает о пакетах, установленных в каталоге eggs
(кроме самого setuptools
!). По-видимому, пакеты в "яйцах" и "развитии яиц" не включены в пути ./bin/buildout
, пока он запускает пакет setup.py
.
Вопрос: как заставить это работать?
setup_requires
загружаются и временно устанавливаются в извлеченный пакет перед запускомsetup.py
; buildout повторно используетsetuptools
для этого напрямую, поэтому я думал, что это сработает. - person Martijn Pieters   schedule 03.02.2013src
(управляется mr.developer< /а>). Я ожидал, чтоbuildout
сообщит setuptools, что, возможно, какие-то яйца уже есть. - person André Anjos   schedule 04.02.2013setuptools
действует сам по себе и, боюсь, игнорирует ресурсы сборки для них. - person Martijn Pieters   schedule 04.02.2013mydependence
перед его тестированием, что не очень удобно. можно ли это исправить? Если нет, то как создать рецепт, который может это сделать? - person André Anjos   schedule 04.02.2013zc.recipe.egg
/zc.buildout
. Проблема: в рецептеzc.recipe.egg:develop
нет места или нет обходного пути для чтенияsetup_requires
записи пакета. Вы можете проверить это, прочитав исходный код здесь, перейдите к строке 827. Там вы увидите buildout write sa wrappersetup.py
, который используется для установки вашего пакета. Этотsetup.py
файл имеет 2 пути и только 2: один для рецепта и один для setuptools. - person André Anjos   schedule 08.02.2013install_requires
, для этого потребуется некоторая специальная обработка. - person Martijn Pieters   schedule 08.02.2013