2011-08-08 11 views
7

Mam problem z instalacją Cythona na Windows 7 x64. Pobrałem i zainstalowałem automated MinGW installer. Tworzona jest distutils.cfg do folderu distutils z poniższej treści:Cython nie skompiluje się na Windows 7 x64

[build] 
compiler = mingw32 

Po dodaniu C:\MinGW\bin do zmiennych środowiskowych, zadzwoniłem easy_install Cython ale otrzymuję następujące błędy. Gwałcenie Internetu naprawdę nie dało mi przydatnych wyników, ponieważ wszystkie te kompilacje: (a może powinienem powiedzieć sh * t?) jest dla mnie tak nowy.

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 

Jakieś pomysły, co jest nie tak? Dzięki !

UPDATE: użyłem dlltools stworzyć libpython27.a a następnie ponownie próbował zbudować Cython i to właśnie działało w porządku! Ale teraz, nazywając cython.exe dostarcza ten błąd:

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

zakładam to dlatego używam Pythonx64 ale kompilator mingw32? Jak mogę skompilować go na x64?

+0

@lance Co się zmieniło? // ah tytuł. –

+1

Tytuł. Możesz zobaczyć podsumowanie edycji zmian, klikając tekst "X min. Temu", który pojawia się bezpośrednio po słowie "edytowane" powyżej mojego avatara powyżej. – lance

+1

Awesome, nie wiedział, że xD Dzięki –

Odpowiedz

10

Istnieją wstępnie skompilowane pakiety Cython on this site. Proponuję, abyś przeszedł na Python x86, nie zyskujesz żadnej realnej korzyści, używając wersji x64. Jeśli chcesz trzymać się x64, nie możesz użyć MingW i musisz użyć kompilatora 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, Zmieniło się to w x86. Dziękuję Ci ! –

Powiązane problemy