¿Cómo puedo usar pywin32 con un virtualenv sin tener que incluir la carpeta site-packages del entorno de acogida?

StackOverflow https://stackoverflow.com/questions/1830304

Pregunta

Estoy trabajando con PyInstaller bajo Python 2.6, que se apoya sólo en parte debido al desorden MS haber creado con su nonense manifiesta que en la actualidad afecta a Python ya que ahora es MSVC8 compilada.

El problema es que el soporte de la incrustación de manifiesto basa en la pywin32 extensiones con el fin de construir, que es un dolor porque sin incluir la carpeta site-packages del huésped cuando se crea la virtualenv (un poco se pierde el punto en un entorno de construcción) no puedo encontrar una manera de instalar las extensiones necesarias para que sean accesibles a PyInstaller.

¿Alguien ha encontrado una solución a este problema?

¿Fue útil?

Solución 3

OK, bueno ya que tenía que encontrar un camino a seguir improvisé. He creado internamente un repositorio Git con una versión hackeada-juntos de pywin32 que instalará dentro de un virtualenv con el script setup.py estándar. Tomó un montón de tocar el violín para que funcione bien, pero me las arreglé para conseguir que la carga y el código depende ahora trabaja como lo necesito para. Si la gente siente que esto sería de beneficio para la comunidad por favor enviar un comentario:. Si consigo suficiente Voy a tratar de poner algo en mi cuenta de GitHub

Otros consejos

http://old.nabble.com/ ventanas: -virtualenv-y-pywin32 - td27658201.html (ahora un vínculo roto), que ofreció la siguiente solución:

  1. http://sourceforge.net/projects/pywin32/files/ para el URL del exe desea
  2. Activa tu virtualenv
  3. easy_install http://PATH.TO/EXE/DOWNLOAD Ejecutar

Esto funciona con las versiones modernas de setuptools (circa de febrero de 2014 reportados por tovmeod en los comentarios).


Si está utilizando una versión antigua de setuptools (o distribuirlo incluido de nuevo en setuptools), puede recibir este mensaje de error:

  

error: C: \ Users \ bla \ AppData \ \ temporal local \ easy_install-ibkzv7 \ pywin32-214.win32-py2.6.exe no es un distutils válidos de Windows .exe

En cuyo caso:

  1. Descargar el mismo exe
  2. Activa tu virtualenv
  3. easy_install DOWNLOADED_FILE.exe Ejecutar

I en lugar de esperar intentado "PIP instalar" en lugar de "easy_install", pero esto no funcionó, y es probable que nunca (cita requerida).


Finalmente, encontré pero no han probado una solución en http://www.mail-archive.com/python-list@python.org/msg272040.html que es:

  

Resuelto esto copiando el archivo pywin32.pth en mis virtualenv site-packages   y editar el archivo para que apunte a la ruta.

Si las otras opciones no funcionan para usted, tal vez esto?

En Python 2.7 o uso 3.x pypiwin32 .

pip install pypiwin32

Esto puede haber sido mejorado desde la respuesta anterior, ya he instalado con éxito en la caja de arena pywin32 en varias máquinas sin ningún tipo de "hacks" específicos:

$ virtualenv sandbox
$ sandbox\scripts\activate
(sandbox) $ git clone https://github.com/Travis-Sun/pywin32.git
(sandbox) $ cd pywin32
(sandbox) $ python setup.py install

Probado con entorno siguiente:

Editar: Rasca y esto por ahora, parece que hay algunos problemas con la instalación sigue ...

Tengo bastante cansado de toda la situación, y acabo de crear un juego de ruedas convertidos ( "rueda convertir <.exe>"). Voy a tratar de mantenerlos mantenidos para la generación más reciente, pero no grito si hay algún problema.

https://tr00st.co.uk/python/wheel/pywin32/

La instalación se puede hacer fácilmente usando pip y señalando el paquete que coincidan con su versión y la arquitectura. Por ejemplo, para Python 3.5 / amd64:

https: // tr00st. co.uk/python/wheel/pywin32/pywin32-219-cp35-none-win_amd64.whl

Advertencia: El proceso --upgrade falla en la actualidad, como el procedimiento de desinstalación no es capaz de limpiar después de sí mismo (Acceso denegado al limpiar win32api.pyd) - esto es sólo cuando se retira el directorio temporal, que puede ser eliminado manualmente. La manera más fácil de evitar esto es desinstalar y volver a instalar en lugar de actualizar, a continuación, elimine manualmente la carpeta temporal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top