He investigado este tema un poco más. Empecé desde declaración de techtonik - La respuesta es simple: nadie lo implementó. Esto, sin embargo, plantea otra pregunta: ¿por qué nadie lo implementó? Sospecho que la respuesta es porque funciona. Esto lleva a otra pregunta: ¿por qué funciona?
La razón por la que todo funciona sin DLLs
carpeta que se copiará en virtualenv es que
- Python busca
sys.path
de encontrar cualquier archivo DLL que necesita
sys.path
después de la activación de virtualenv contiene ruta de acceso al DLLs
carpeta original
La primera declaración se puede probar simplemente eliminando la ruta a la carpeta DLLs
desde sys.path
y tratando de importar el módulo select
(este módulo necesita el archivo select.pyd
de la carpeta DLLs
) que luego falla.
En el comentario dices Me gustaría mantener las DLL del módulo de Python en el entorno virtual junto con el código de Python. Eso es posible simplemente copiando la carpeta DLLs
en virtualenv. La razón por la que esto funciona es que sys.path
después de la activación de virtualenv también contiene la ruta a la carpeta DLLs
dentro de virtualenv (aunque no se crea dicha carpeta al crear virtualenv). Esta ruta se coloca antes de la ruta a la carpeta original DLLs
, lo que significa que se está buscando primero y, por lo tanto, reemplaza la carpeta original DLLs
.
He publicado la pregunta titulada DLLs folder on Windows en la lista de correo de Python.
"sys.path después de la activación de virtualenv contiene la ruta a la carpeta original de archivos DLL" No activé 'mi env, y también contiene la ruta a la carpeta original de archivos DLL en' sys.path'. ¿Te entendí mal? – cubuspl42
* (...) 'sys.path' después de la activación de virtualenv contiene ** también ** ruta a la carpeta' DLL' dentro de virtualenv (...) * Sin virtualenv activado 'sys.path' contiene ruta a * Carpeta DLLs * de la instalación de Python. Después de activar virtualenv, 'sys.path' contiene ** ambas ** rutas de acceso - a la carpeta * DLLs * específica de virtualenv y también a la carpeta * DLLs * de la instalación de Python. –