python - eliminar virtualenv
¿Cómo puedo usar pywin32 con virtualenv sin tener que incluir la carpeta de paquetes de sitio del entorno de host? (5)
Encontré http://old.nabble.com/Windows:-virtualenv-and-pywin32--td27658201.html (ahora un enlace inactivo) que ofrecía la siguiente solución:
- Explore http://sourceforge.net/projects/pywin32/files/ para obtener la URL del exe que desea
- Activa tu virtualenv
- Ejecute
easy_install http://PATH.TO/EXE/DOWNLOAD
Esto funciona con versiones modernas de setuptools (alrededor de febrero de 2014, informadas por tovmeod en los comentarios).
Si está utilizando una versión anterior de setuptools (o distribúyala fusionada nuevamente en setuptools), puede recibir este mensaje de error:
error: c: / users / blah / appdata / local / temp / easy_install-ibkzv7 / pywin32-214.win32-py2.6.exe no es un archivo .exe de Windows distutils válido
En ese caso:
- Descargue el exe usted mismo
- Activa tu virtualenv
- Ejecute
easy_install DOWNLOADED_FILE.exe
Prefiero probar "pip install" en lugar de "easy_install", pero esto no funcionó, y probablemente nunca lo hará (citation needed).
Finalmente, encontré pero no he probado una solución en http://www.mail-archive.com/[email protected]/msg272040.html que es:
Resolvió esto copiando el archivo pywin32.pth en my virtualenv site-packages y editando el archivo para apuntar a la ruta.
Si las otras opciones no funcionan para usted, ¿quizás esto funcione?
Estoy trabajando con PyInstaller en Python 2.6, que solo es parcialmente compatible debido al desorden que MS ha creado con su manifiesto nonense que ahora afecta a Python ya que ahora está compilado en MSVC8.
El problema es que el soporte de incrustación manifiesta depende de las extensiones pywin32 para construir, lo cual es un problema porque sin incluir la carpeta de paquetes de sitio del host cuando creo el virtualenv (un poco derrota el punto en un entorno de construcción) no puedo encontrar una manera para instalar las extensiones necesarias para que PyInstaller pueda acceder a ellas.
¿Alguien ha encontrado una solución a este problema?
Esto puede haber sido mejorado desde la respuesta anterior, ya que he instalado exitosamente pywin32 en sandbox en varias máquinas sin ningún "hack" específico:
$ 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 el siguiente entorno:
- Windows 7
- git
- python 2.7.10 con virtualenv
- VS2008. También puede funcionar (pero aún no lo he probado) con http://www.microsoft.com/en-us/download/details.aspx?id=44266
OK, bueno, ya que tenía que encontrar un camino hacia adelante, improvisé. He creado internamente un repositorio de git con una versión pirateada de pywin32 que se instalará dentro de un virtualenv utilizando el script setup.py
estándar. Me costó mucho hacer que funcionara bien, pero logré que se cargara y el código dependiente ahora funciona como lo necesito. Si las personas sienten que esto sería beneficioso para la comunidad, publique un comentario: si recibo lo suficiente, intentaré incluir algo en mi cuenta de github.
Para Python 2.7 o 3.x use pypiwin32 .
pip install pypiwin32
Editar: rayar esto por ahora, parece que hay algunos problemas con la instalación aún ...
Me cansé de toda la situación y acabo de crear un juego de ruedas convertidas ("wheel convert <.exe>"). Trataré de mantenerlos para la compilación más reciente, pero grito si hay algún problema.
https://tr00st.co.uk/python/wheel/pywin32/
La instalación se puede hacer fácilmente usando pip y apuntando al paquete que coincida con su versión y arquitectura. Por ejemplo, para Python 3.5 / amd64:
pip install https://tr00st.co.uk/python/wheel/pywin32/pywin32-219-cp35-none-win_amd64.whl
Advertencia: el proceso de actualización falla actualmente, ya que el procedimiento de desinstalación no puede limpiarse por sí mismo (Acceso denegado al limpiar win32api.pyd); esto es solo cuando se elimina el directorio temporal, que se puede eliminar manualmente. La forma más sencilla de evitar esto es desinstalar y reinstalar en lugar de actualizar, luego eliminar manualmente la carpeta temporal.