la instalación del paquete pip de Python falla, error dllwrap después de ‘corregir’: “no se puede encontrar vcvarsall.bat”

No puedo encontrar esto en los archivos. ¿Hay algo que no está bien con mingw / msys? [Necesito arreglar vcvarsall.bat, para poder instalar otros paquetes.]

Error al instalar el paquete python ‘retorcido’ usando pip.exe.

Tengo python2.6 y mingw / msys instalados. % PATH% incluye C:\MinGW\ y C:\MinGW\mingw32\bin

primero: la pip.exe install twisted falla al decir error: Unable to find vcvarsall.bat Creo el archivo G:\Programs (x86)\Python 2.6\Lib\distutils\distutils.cfg , que contiene:

 [build] compiler=mingw32 

Ahora el error que me sale es:

 g:\Programs (x86)\Python 2.6>python Scripts\pip-script.py install twisted Downloading/unpacking twisted Running setup.py egg_info for package twisted Downloading/unpacking zope.interface (from twisted) Running setup.py egg_info for package zope.interface Requirement already satisfied (use --upgrade to upgrade): setuptools in g:\progr ams (x86)\python 2.6\lib\site-packages (from zope.interface->twisted) Installing collected packages: twisted, zope.interface Running setup.py install for twisted C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall "-Ig:\Programs (x86)\Python 2.6\include" "-Ig:\Programs (x86)\Python 2.6\PC" -c conftest.c -o conftest.o conftest.c:1:21: fatal error: rpc/rpc.h: No such file or directory comstacktion terminated. C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall "-Ig:\Programs (x86)\Python 2.6\include" "-Ig:\Programs (x86)\Python 2.6\PC" -c conftest.c -o conftest.o conftest.c:1:23: fatal error: sys/epoll.h: No such file or directory comstacktion terminated. building 'twisted.protocols._c_urlarg' extension C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -DWIN32=1 "-Ig:\Programs (x8 6)\Python 2.6\include" "-Ig:\Programs (x86)\Python 2.6\PC" -c twisted/protocols/ _c_urlarg.c -o build\temp.win32-2.6\Release\twisted\protocols\_c_urlarg.o twisted/protocols/_c_urlarg.c: In function 'unquote': twisted/protocols/_c_urlarg.c:41:50: warning: 'tmp' may be used uninitialize d in this function C:\MinGW\bin\dllwrap.exe -mno-cygwin -mdll -static --output-lib build\temp.w in32-2.6\Release\twisted\protocols\lib_c_urlarg.a --def build\temp.win32-2.6\Rel ease\twisted\protocols\_c_urlarg.def -s build\temp.win32-2.6\Release\twisted\pro tocols\_c_urlarg.o "-Lg:\Programs (x86)\Python 2.6\libs" "-Lg:\Programs (x86)\Py thon 2.6\PCbuild" -lpython26 -lmsvcr90 -o build\lib.win32-2.6\twisted\protocols\ _c_urlarg.pyd _c_urlarg.exp: file not recognized: File format not recognized collect2: ld returned 1 exit status dllwrap: gcc exited with status 1 error: command 'dllwrap' failed with exit status 1 Complete output from command "g:\Programs (x86)\Python 2.6\python.exe" -c "i mport setuptools;__file__='g:\\Programs (x86)\\Python 2.6\\build\\twisted\\setup .py';execfile(__file__)" install --single-version-externally-managed --record c: \users\jake\appdata\local\temp\pip-3y_c1e-record\install-record.txt: running install running build running build_py running egg_info writing requirements to Twisted.egg-info\requires.txt writing Twisted.egg-info\PKG-INFO writing top-level names to Twisted.egg-info\top_level.txt writing dependency_links to Twisted.egg-info\dependency_links.txt reading manifest file 'Twisted.egg-info\SOURCES.txt' writing manifest file 'Twisted.egg-info\SOURCES.txt' running build_ext C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall "-Ig:\Programs (x86)\Python 2.6\ include" "-Ig:\Programs (x86)\Python 2.6\PC" -c conftest.c -o conftest.o conftest.c:1:21: fatal error: rpc/rpc.h: No such file or directory comstacktion terminated. C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall "-Ig:\Programs (x86)\Python 2.6\ include" "-Ig:\Programs (x86)\Python 2.6\PC" -c conftest.c -o conftest.o conftest.c:1:23: fatal error: sys/epoll.h: No such file or directory comstacktion terminated. building 'twisted.protocols._c_urlarg' extension C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -DWIN32=1 "-Ig:\Programs (x86)\P ython 2.6\include" "-Ig:\Programs (x86)\Python 2.6\PC" -c twisted/protocols/_c_u rlarg.c -o build\temp.win32-2.6\Release\twisted\protocols\_c_urlarg.o twisted/protocols/_c_urlarg.c: In function 'unquote': twisted/protocols/_c_urlarg.c:41:50: warning: 'tmp' may be used uninitialized in this function writing build\temp.win32-2.6\Release\twisted\protocols\_c_urlarg.def C:\MinGW\bin\dllwrap.exe -mno-cygwin -mdll -static --output-lib build\temp.win32 -2.6\Release\twisted\protocols\lib_c_urlarg.a --def build\temp.win32-2.6\Release \twisted\protocols\_c_urlarg.def -s build\temp.win32-2.6\Release\twisted\protoco ls\_c_urlarg.o "-Lg:\Programs (x86)\Python 2.6\libs" "-Lg:\Programs (x86)\Python 2.6\PCbuild" -lpython26 -lmsvcr90 -o build\lib.win32-2.6\twisted\protocols\_c_u rlarg.pyd _c_urlarg.exp: file not recognized: File format not recognized collect2: ld returned 1 exit status dllwrap: gcc exited with status 1 warning: manifest_maker: standard file '-c' not found error: command 'dllwrap' failed with exit status 1 ---------------------------------------- Command "g:\Programs (x86)\Python 2.6\python.exe" -c "import setuptools;__file__ ='g:\\Programs (x86)\\Python 2.6\\build\\twisted\\setup.py';execfile(__file__)" install --single-version-externally-managed --record c:\users\jake\appdata\local \temp\pip-3y_c1e-record\install-record.txt failed with error code 1 Storing complete log in C:\Users\jake\AppData\Roaming\pip\pip.log 

Este es probablemente un error con Python. Ver http://bugs.python.org/issue2698

Mientras tanto, puedes instalar ActivePython e instalar Twisted a través de PyPM (no se necesitan comstackdores).

Alternativamente, puede utilizar el binario oficial … aunque recomiendo la solución mencionada ya que puede “actualizar” fácilmente a versiones más recientes de Twisted en el futuro.

La pregunta: ¿por qué dllwrap da este error dentro de pip?

 _foo.exp: file not recognized: File format not recognized 

Respuesta corta: revisa tu RUTA. MinGW \ bin debe estar cerca del inicio de la misma.

Respuesta larga: Por un tiempo estaba usando una solución de trabajo. Tomé el comando dllwrap del pip.log y lo ejecuté directamente. Eso construyó el .pyd y habilitó la instalación de pip para terminar el trabajo.

Pasé la bandera –verbose en estas dos formas diferentes de llamar a dllwrap. Debajo de esto se estaba haciendo esto.

 dlltool: Opened temporary file: dumlc.s dlltool: run: as -o _bcrypt.exp dumlc.s dlltool: Generated exports file 

Llamar a dllwrap desde la línea de comandos dio esto.

 C:\MinGW\bin\dlltool: Opened temporary file: demmc.s C:\MinGW\bin\dlltool: run: C:\MinGW\bin\as -o _bcrypt.exp demmc.s C:\MinGW\bin\dlltool: Generated exports file 

Mi computadora ejecuta Windows 7 de 64 bits pero con Python 2.7 de 32 bits. Es nuevo pero parece tener el SDK de aplicaciones de AMD preinstalado. Eso tiene un as.exe que por defecto es de 64 bits de salida.

Mi solución fue editar el PATH para que C: \ MinGW \ bin esté por delante de C: \ Archivos de progtwig (x86) \ AMD APP \ bin \ x86_64

Este problema podría solucionarse de manera más sólida en el código de Python, aunque no he identificado dónde en virtualenv, pip o distutils se debe hacer.

Hay otras dos cosas necesarias para construir extensiones usando MinGW que repetiré aquí brevemente.

Configurar distutils para usar el comstackdor MinGW.

Esto se puede hacer en una variedad de archivos o interruptores de línea de comando. Opté por un archivo en mi directorio personal.

 $ cat ~/pydistutils.cfg [build] compiler = mingw32 

Parche de distutils para eliminar el interruptor -mno-cygwin

Como administrador, edite Lib / distutils / cygwinccompiler.py. Elimina las cuatro opciones de -mno-cygwin.

 s/ -mno-cygwin// 

-mno-cygwin ha quedado en desuso en gcc por un tiempo y ahora es un error.

Ver http://bugs.python.org/issue12641

En Windows, instalé Visual Studio 2008 (vcsetup.exe) para solucionar este problema.

enlace actualizado: http://www.microsoft.com/en-us/download/details.aspx?id=15336

Si usa Python 3.3 puede usar Visual Studio 2010