место установки яйца 'setup.py test'? - PullRequest
7 голосов
/ 04 декабря 2009

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

По моему setup.cfg у меня есть:

[easy_install]
allow_hosts = None
find_links = ../../setup

Я запускаю python setup.py develop, и он находит и устанавливает все пакеты правильно.

Для тестирования у меня есть дополнительное требование, указанное в setup.py.

tests_require=["pinocchio==0.2"],

Это яйцо также находится локально в каталоге ../../setup.

Я запускаю python setup.py test, и он видит зависимость и находит яйцо в ../../setup просто отлично. Однако яйцо устанавливается в мой каталог current вместо каталога site-packages с остальными яйцами.

Я попытался указать install-dir как в setup.cfg, так и в командной строке, но ни одна из них, похоже, не работает для команды tests.

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

Как сохранить зависимость в разделе tests_require, но установить ее в каталог site-packages?

1 Ответ

3 голосов
/ 04 декабря 2009

Если взглянуть на исходный код (setuptools / command / tests.py), то не похоже, что тест setup.py не должен ничего устанавливать по замыслу (это тестирование, так что зачем помещать что-либо в пакеты сайта) ?). Он использует fetch_build_egg (setuptools / dist.py) для получения яиц, что на самом деле делает local easy_install. Я подозреваю, что вы не можете сделать так, чтобы тест делал то, что вы хотите.

Примечания / идеи: Мой опыт работы с setuptools заключается в том, что в нем есть ошибки и недокументированное поведение. (Одна особенно неприятная путаница, которую я обнаружил, заключалась в том, что она не будет входить в каталоги с мягкими ссылками, когда это будет делать distutils).

Я бы порекомендовал либо А) не делать этого. :), B) вручную установить файл, вызвав пакет easy_install. или C) заглянуть в систему setuptools и, возможно, добавить свою собственную команду. Это не так сложно понять, и знание этого очень поможет, когда вы получите в будущем информацию о настройках.

...