pip con python incrustado

Instalé Python incrustado desde aquí , titulado “Windows x86-64 archivo zip incrustado”, pero no tiene pip instalado, tampoco tiene paquetes de sitio, cuando bash hacer python get-pip.py no se ejecutó porque este archivo tiene import pip en él. Entonces, ¿cómo puedo instalar pip en un entorno Python incrustado?

Rastreo (última llamada más reciente): Archivo “. \ Getpip.py”, línea 20061, en el archivo principal () “. \ Getpip.py”, línea 194, en el arranque principal (tmpdir = tmpdir) Archivo “. \ Getpip. py “, línea 82, en el archivo pip de arranque”, línea 961, en _find_and_load File “”, línea 950, en _find_and_load_unlocked File “”, línea 646, en el archivo _load_unlocked File “, line 616, en _load_backward_compatible

La estructura del directorio es:

 Directory: C:\Downloads\python-3.6.1rc1-embed-win32 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 3/4/2017 7:26 PM 157344 pyexpat.pyd -a---- 3/4/2017 7:26 PM 97952 python.exe -a---- 3/4/2017 7:26 PM 58016 python3.dll -a---- 3/4/2017 7:26 PM 3263648 python36.dll -a---- 3/4/2017 7:26 PM 2209284 python36.zip -a---- 3/4/2017 7:26 PM 79 python36._pth -a---- 3/4/2017 7:26 PM 96416 pythonw.exe -a---- 3/4/2017 7:26 PM 23200 select.pyd -a---- 3/4/2017 7:26 PM 866464 sqlite3.dll -a---- 3/4/2017 7:26 PM 895648 unicodedata.pyd -a---- 3/4/2017 7:26 PM 83784 vcruntime140.dll -a---- 3/4/2017 7:26 PM 24224 winsound.pyd -a---- 3/4/2017 7:26 PM 45216 _asyncio.pyd -a---- 3/4/2017 7:26 PM 77984 _bz2.pyd -a---- 3/4/2017 7:26 PM 101536 _ctypes.pyd -a---- 3/4/2017 7:26 PM 215712 _decimal.pyd -a---- 3/4/2017 7:26 PM 156832 _elementtree.pyd -a---- 3/4/2017 7:26 PM 1042592 _hashlib.pyd -a---- 3/4/2017 7:26 PM 183456 _lzma.pyd -a---- 3/4/2017 7:26 PM 32416 _msi.pyd -a---- 3/4/2017 7:26 PM 25760 _multiprocessing.pyd -a---- 3/4/2017 7:26 PM 33952 _overlapped.pyd -a---- 3/4/2017 7:26 PM 61600 _socket.pyd -a---- 3/4/2017 7:26 PM 64160 _sqlite3.pyd -a---- 3/4/2017 7:26 PM 1458848 _ssl.pyd 

Recientemente me encontré con el mismo problema. Revisé la documentación para el pip y parecen decir que este caso de uso no es compatible, etc. Pero de todos modos, aquí está mi truco para que los módulos funcionen.

Instalé, y con eso me refiero a descomprimir python incrustado en un directorio llamado d: \ python. Asumí que los módulos van a vivir en ese mismo directorio.

Primero, para instalar el módulo pip, necesitaba guardar los archivos extraídos. Cambié el archivo get-pip.py utilizando un editor de texto que admitía los terminadores de línea de Unix al eliminar las líneas rmtree que eliminan el árbol temporal y desempaquetado del blob contenido en el archivo get-pip.py.

Cambié ambas ubicaciones, pero solo la última fue necesaria. La línea que cambié en dos ubicaciones lee.

 shutil.rmtree(tmpdir, ignore_errors=True) 

y lo modifiqué así (no quería molestarme con los bloques de sangrado de python):

 print('shutil.rmtree(tmpdir, ignore_errors=True)') 

Ahora ejecuté mi python D: \ python \ python.exe en el archivo get-pip.py modificado y encontré el directorio temporal donde se descomprimieron los archivos.

Copié este directorio, (verifique que contiene un archivo .py principal ) en la instalación de python D: \ python \ pip (aquí es donde quería que mis módulos estuvieran activos), asegurándome de que el directorio D: \ python \ pip contenía Archivo .py principal .

El módulo pip ahora está instalado en el directorio de python, pero necesita hackear pip adicional para eliminar la excepción anterior. Hice esto cambiando el archivo locations.py (en mi caso ubicado en D: \ python \ pip \ locations.py) para devolver las ubicaciones bin_py y bin_user de D: \ python.

es decir:

 86 if WINDOWS: .... bin_py = 'd:/python' bin_user = 'd:/python' 

Tuve que cambiar el user_dir para pip en algún lugar que persistiera en esta unidad que se compartió en varias máquinas virtuales.

El módulo pip ahora funciona bien, por ejemplo

d: \ python \ python.exe -m pip …

Incluso si se establece explícitamente que la versión incrustada de python no admite pip , dicen que es posible con cuidado. Hay una solución sencilla para usar pip dentro de una versión incrustada de python.

PIP se puede instalar en Python incrustado. Necesitas:

  • Descargue y descomprima python “… archivo zip incrustado”. (fuente: https://www.python.org/downloads/%5BOS versión])

  • edite el archivo ‘[carpeta de python] \ python36._pth’. Descomente la statement del import site como se propone en el comentario anterior.

     python36.zip . # Uncomment to run site.main() automatically import site 
  • Descargue get-pip.py en la carpeta de instalación de python (fuente: https://pip.pypa.io/en/stable/installing/ )

  • ejecutar el comando de guión get-pip. esto instala pip en el directorio [python] \ Scripts

     python get-pip.py 
  • ejecute pip directamente desde la línea de comandos, ya que pip es un progtwig ejecutable (este ejemplo es para instalar pandas)

     .\Scripts\pip --install --user pandas 

Puede encontrar más información sobre esto en el número 4207 de pip

También se puede acceder a Pip mediante progtwigción dentro de python como comando (este ejemplo instala pandas):

 import pip pip.main(['install'], 'pandas') 

(Fuente: Instalación del módulo python dentro del código )