Virtualenv es genial: me permite mantener varias instalaciones distintas de Python para que las dependencias de diferentes proyectos no se agrupen en una pila común.
Pero si quiero instalar un paquete en Windows que está empaquetado como un instalador .exe, ¿cómo puedo dirigirlo para que se instale en virtualenv? Por ejemplo, tengo pycuda-0.94rc.win32-py2.6.exe. Cuando lo ejecuto, examina el registro y encuentra solo un Python26 para instalar, el común en el que se basa mi virtualenv.
¿Cómo puedo ordenar que se instale en virtualenv?
python
windows
virtualenv
Ned Batchelder
fuente
fuente
Respuestas:
Sí tu puedes. Todo lo que necesitas es
¿Sorprendido? Parece que los instaladores binarios para Windows hechos con distutils combinan .exe con .zip en un archivo .exe. Cambie la extensión a .zip para ver que es un archivo zip válido. Descubrí esto después de leer las respuestas a mi pregunta ¿Dónde puedo descargar huevos binarios con psycopg2 para Windows?
ACTUALIZAR
Como señaló Tritium21 en su respuesta hoy en día, debe usar pip en lugar de easy_install. Pip no puede instalar paquetes binarios creados por distutils pero puede instalar paquetes binarios en el nuevo formato de rueda . Puede convertir el formato anterior al nuevo utilizando el paquete de rueda , que primero debe instalar.
fuente
Sé que esta es una pregunta bastante antigua, y es anterior a las herramientas de las que voy a hablar, pero por el bien de Google, creo que es una buena idea mencionarla. easy_install es la oveja negra del empaque de python. Nadie quiere admitir que lo usó con el nuevo calor de pip alrededor. Además, si bien jugar trucos de registro funcionará mejor para instaladores EXE no estándar (alguien construyó el instalador ellos mismos en lugar de usar distutils y está verificando el registro para la ruta de instalación), ahora hay una Mejor manera (c) para instaladores EXE estándar .
El formato de rueda, presentado recientemente a partir de esta publicación, es el reemplazo del formato de huevo, desempeñando el mismo papel. Este formato también es compatible con pip (una herramienta ya instalada en su virtualenv).
si por alguna razón
pip install WHEELFILE
no funciona, intentewheel install WHEELFILE
fuente
wheel install WHEELFILE
, responda editado para señalar la existencia de eso. La depuración de un problema específico para alguien no es algo trivial en los comentarios SO.Terminé adaptando un script ( http://effbot.org/zone/python-register.htm ) para registrar una instalación de Python en el registro. Puedo escoger el pitón ser el pitón en el registro, ejecute el instalador de Windows, a continuación, establezca la parte posterior del registro:
Ejecute este script con el Python que desea registrar y se ingresará en el registro. Tenga en cuenta que en Windows 7 y Vista, necesitará privilegios de administrador.
fuente
regpath = "SOFTWARE\\Wow6432Node\\Python\\Pythoncore\\%s\\" % (version)
easy_install puede instalar paquetes .exe siempre que se hayan creado utilizando el destino bdist_wininst de distutils, que cubre muchos paquetes populares. Sin embargo, hay muchos otros que no lo son (wxPython es uno con el que he luchado)
fuente
Puede usar easy_install del entorno para instalar PyCUDA.
te dará la misma versión 0.94rc.
En Windows, easy_install.exe estará en el directorio Scripts.
fuente
Si es un
.msi
, puede especificar las opciones de línea de comando usandomsiexec
. El instalador de Python sí lo permiteTARGETDIR
, pero no estoy seguro de si distutils incorpora esto a los instaladores de distribución.Si está utilizando un
.exe
, no creo que haya una manera limpia. Una opción es usar un programa como 7Zip (o winzip, etc.) para extraer directamente el contenido del exe, luego copiar las carpetas relevantes en su carpeta virtual de paquetes de sitio. Por ejemplo, si extraigo "processing-0.5.2.win32-py2.5.exe", encuentro una carpeta "PLATLIB \ processing" que copio en una ruta virtualenv y uso sin ningún problema de tiempo de ejecución. (No estoy seguro de que siempre sea así de simple).fuente