Я выполняю свои тесты на конвейерах Azure (но то же самое относится и к Travis и Appveyor).У меня есть пакет Python, назовем его calculator
, который содержит расширения Cython.Когда я отправляю в свой репозиторий, серверы CI клонируют мой пакет и устанавливают его, используя python setup.py develop
, а затем запускают pytest
для запуска тестов.Запуск python setup.py develop
создает расширения на месте, поэтому общие объекты находятся в реальном каталоге.Поэтому, когда мои юнит-тесты запускаются import calculator
, cwd является исходным каталогом, поэтому используются фактические копии скриптов python, которые содержат общие объектные файлы прямо здесь, так что все работает нормально.
Теперь яхочу заменить python setup.py develop
на python setup.py install
.Теперь расширения больше не встраиваются в текущий исходный каталог, а упаковываются и устанавливаются в путь к Python.Однако, когда pytest вызывается после установки, python все равно может найти модуль calculator
в рабочем каталоге и (я думаю) игнорирует правильно установленный модуль calculator
.И поскольку расширения не были встроены на месте, тесты не выполняются, говоря, что модуль расширения не найден.
Причина, по которой я хочу это сделать, заключается в том, что у меня также настроены колеса для сборки на CI-серверах.Когда я собираю колесо, я также хотел бы убедиться, что ничего не пошло не так, установить это колесо и провести на нем тесты.Аналогично python setup.py install
, я предполагаю, что модуль calcualtor
в рабочем каталоге имеет приоритет над моим установленным колесом и приводит к ошибкам импорта расширений.
Как люди обычно справляются с этим?