Поэзия нежелательный доступ к пакетам за пределами env - PullRequest
0 голосов
/ 07 октября 2019

Насколько я понимаю, виртуальный env, созданный поэзией, по умолчанию не будет предоставлять доступ ни к каким пакетам вне этого env, даже к тем, которые установлены в системном каталоге (такая функция добавляется в https://github.com/sdispater/poetry/issues/1393что я думаю подразумевает поведение по умолчанию наоборот). Разработка altair_recipes https://github.com/piccolbo/altair_recipes/ У меня была пара случаев, когда я забывал добавить новый файл dep в pyproject.toml, тесты выполнялись локально, но не выполнялись при загрузке этого пакета. Ситуация быстро исправляется путем добавления зависимости с добавлением поэзии. В последнем примере я начал использовать гипотезу для некоторых тестов, забыл добавить ее, все работало локально, пошло на выпуск, провалилось. Добавлен как dev dep, pass local, pass remote, done (см. https://travis -ci.org / piccolbo / altair_recipes build 102 и 103). Единственная теория, которая у меня есть, заключается в том, что локальное тестирование смогло определить системную установку этого пакета. Тесты выполняются с poetry run py.test Чтобы локальные тесты соответствовали тестам, выполненным в настройке CI в новой среде, что я могу сделать, чтобы локальная среда лучше соответствовала среде CI? И разве проблема заключается в изоляции от установки системы? Спасибо

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

У меня ошибка https://github.com/sdispater/poetry/issues/571 Мне нужно еще 8 символов, чтобы опубликовать это. Ясно ТАК и не разделяю одно и то же мнение о краткости.

0 голосов
/ 11 октября 2019

Единственная теория, которая у меня есть, заключается в том, что локальное тестирование смогло определить системную установку этого пакета.

Учитывая мой личный опыт работы с упаковкой в ​​python, я бы предположилчто это основная причина. Теперь есть долгосрочное и краткосрочное решение этой проблемы:

В долгосрочной перспективе вы должны принять решение никогда не устанавливать пакеты python, которые привязаны к единой системе проекта в целом. Это включает в себя dev-зависимости, такие как pytest или в вашем случае hypothesis - удалите их. poetry - один из очень немногих пакетов python, которые имеют отношение ко всей системе и должны быть установлены как таковые. Кроме того, примечание: именно поэтому рекомендуемый способ установки poetry это не pip, а get-poetry.py.

Краткосрочный, вы можете настроить свою виртуальную среду с помощьюрука с virtualenv, который блокирует глобальные пакеты сайта по умолчанию (но вполне вероятно, что envs, которые строит poetry, имеют ту же настройку по умолчанию). Чтобы обеспечить выполнение локально установленных пакетов, вы можете установить путь выполнения перед запуском тестов:

$ PATH=$(dirname $(poetry run which python)) pytest

Если вы активировали виртуальный env (что можно сделать, запустив poetry shell), вы также можете запуститьинструменты как модули Python:

(env)$ python -m pytest
...