2011-08-08 10 views
7

Estoy luchando con la instalación de Cython en Windows 7 x64. descargué e instalé el automated MinGW installer. El creó un distutils.cfg a la carpeta distutils con el siguiente contenido:Cython no se compilará en Windows 7 x64

[build] 
compiler = mingw32 

Después de añadir C:\MinGW\bin a las variables de entorno, me llamaron easy_install Cython pero me sale el siguiente error. Violar Internet realmente no me dio buenos resultados ya que todas estas cosas de compilación (¿o debería decir sh * t?) son tan nuevas para mí.

c:\users\niklas\appdata\local\temp\easy_install-dgjjub\cython-0.15\cython\plex\scanners.o:Scanners.c:(.text+0x5d59): undefined reference to `_imp__PyObject_GetAttr' 
c:\users\niklas\appdata\local\temp\easy_install-dgjjub\cython-0.15\cython\plex\scanners.o:Scanners.c:(.text+0x5dc5): undefined reference to `_imp__PyObject_GetAttr' 
c:\users\niklas\appdata\local\temp\easy_install-dgjjub\cython-0.15\cython\plex\scanners.o:Scanners.c:(.text+0x5e31): undefined reference to `_imp__PyObject_GetAttr' 
c:\users\niklas\appdata\local\temp\easy_install-dgjjub\cython-0.15\cython\plex\scanners.o:Scanners.c:(.text+0x5ebc): undefined reference to `_imp__PyObject_Call' 
c:\users\niklas\appdata\local\temp\easy_install-dgjjub\cython-0.15\cython\plex\scanners.o:Scanners.c:(.text+0x5f08): undefined reference to `_imp__PyDict_New' 
c:\users\niklas\appdata\local\temp\easy_install-dgjjub\cython-0.15\cython\plex\scanners.o:Scanners.c:(.text+0x5f49): undefined reference to `_imp__PyObject_SetAttr' 
c:\users\niklas\appdata\local\temp\easy_install-dgjjub\cython-0.15\cython\plex\scanners.o:Scanners.c:(.text+0x5ffe): undefined reference to `_imp__PyErr_Occurred' 
c:\users\niklas\appdata\local\temp\easy_install-dgjjub\cython-0.15\cython\plex\scanners.o:Scanners.c:(.text+0x6013): undefined reference to `_imp__PyExc_ImportError' 
c:\users\niklas\appdata\local\temp\easy_install-dgjjub\cython-0.15\cython\plex\scanners.o:Scanners.c:(.text+0x601e): undefined reference to `_imp__PyErr_SetString' 
c:\users\niklas\appdata\local\temp\easy_install-dgjjub\cython-0.15\cython\plex\scanners.o:Scanners.c:(.text+0x602d): undefined reference to `_imp__PyInt_FromLong' 
collect2: ld returned 1 exit status 
dllwrap: gcc exited with status 1 
error: Setup script exited with error: command 'dllwrap' failed with exit status 1 

¿Alguna idea qué pasa? Gracias !

ACTUALIZACIÓN: he usado para crear dlltools libpython27.a y luego otra vez trató de construir Cython y que sólo funcionó bien! Pero ahora, llamando cython.exe ofrece este error:

ImportError: DLL load failed, %1 is not a valid Win32-executable. 

Asumo que esto es porque uso Pythonx64 pero el compilador MinGW32? Entonces, ¿cómo puedo compilarlo para x64?

+0

@lance ¿Qué cambiaste? // ah el título. –

+1

El título. Puede ver un resumen de las ediciones de revisión haciendo clic en el texto "Hace X minutos" que aparece directamente después de la palabra "editada" arriba de mi avatar. – lance

+1

Impresionante, no sabía que xD Gracias –

Respuesta

10

Hay paquetes precompilados de Cython on this site. Te sugiero que cambies a x86 Python, no obtienes ninguna ventaja real al usar la versión x64. Si quiere seguir con x64, no puede usar MingW y tiene que usar el compilador MS SDK C++ (more on this).

Do not use MinGW-w64. As you will notice, the MinGW import library for Python (e.g. libpython27.a) is omitted from the AMD64 version of Python. This is deliberate. Do not try to make one using dlltool. [...] There have also been issues with the mingw runtime conflicting with the MSVC runtime; this can happen from places you don't expect, such as inside runtime libraries for g++ or gfortran.

+1

+1, Cambiando a x86 lo hizo. Gracias ! –

Cuestiones relacionadas