Estoy intentando actualizar nuestra versión de Python de 3.4 a 3.6. Estamos incorporando Python en una aplicación de C ++, por lo que parecía lógico utilizar el nuevo archivo zip incrustable de Windows x86 (desde Python 3.5). Sin embargo, nuestra aplicación no se ejecuta porque “lib / site-packages” no se agrega a la variable sys.path
. He confirmado que después de instalar Python 3.6 en mi máquina y ejecutarlo desde la ubicación instalada, la variable sys.path
contiene (en relación con el directorio de python):
'...\\python36.zip' '...\\DLLs' '...\\lib' '...' '...\\lib\\site-packages'
Sin embargo, cuando ejecuto desde el archivo zip incrustado en la misma máquina, la variable sys.path
contiene (en relación con el directorio de python):
'...\\python36.zip' '...' '...\\\n'
En ambos casos, el directorio “lib / site-packages” existe dentro del directorio de Python. Tampoco tengo una variable de entorno PYTHONPATH definida. ¿Alguien sabe cómo hacer que el archivo zip incrustado actúe de la misma manera que la versión instalada, con respecto a cómo determina sys.path
?
Después de extraer el archivo zip incrustado de Python, hay un archivo llamado “python36._pth” en el directorio raíz. Ese archivo contiene el siguiente texto:
# Uncomment to run site.main() automatically #import site
Como indica el comentario, simplemente elimine el comentario de la statement del import site
eliminando el carácter ‘#’. Después de hacerlo, la variable sys.path
contiene:
'...\\python36.zip' '...' '...\\\n' '...\\lib\\site-packages'
Esto sigue siendo diferente a la versión instalada, pero es exactamente lo que necesitaba en mi caso particular.
Comience a editar
También descubrí que puedes eliminar el archivo “python36._pth” por completo, lo que revierte a Python al comportamiento de la versión no incorporable.