Я исследовал эту тему немного больше.Я начал с заявления techtonik - Ответ прост - никто не реализовал его. Однако возникает другой вопрос - почему никто не реализовал это?Я подозреваю, что ответ, потому что это работает.Это приводит к еще одному вопросу - почему это работает?
Причина, по которой все работает без копирования папки DLLs
в virtualenv, заключается в том, что
- Python выполняет поиск
sys.path
, чтобы найти любойdll ему нужно sys.path
после того, как активация virtualenv содержит путь к исходной папке DLLs
Первый оператор можно просто проверить, удалив путь к папке DLLs
из sys.path
и пытается импортировать модуль select
(для этого модуля требуется файл select.pyd
из папки DLLs
), который затем завершается ошибкой.
В комментарии вы говорите Я хотел бы сохранить модуль PythonБиблиотеки DLL в виртуальной среде вместе с кодом Python. Это возможно, просто скопировав папку DLLs
в virtualenv.Причина, по которой это работает, заключается в том, что sys.path
после активации virtualenv содержит также путь к папке DLLs
внутри virtualenv (хотя при создании virtualenv такой папки не создается).Этот путь помещается перед путем к исходной папке DLLs
, что означает, что он сначала ищется и, таким образом, переопределяет исходную папку DLLs
.
Я опубликовал вопрос с названием Папка DLLs в Windows вСписок рассылки Python.