2014-12-15 39 views
5

Mam moduł .pyx, który próbuję skompilować do użycia z 64-bitowym pythonem 3.4 na Windowsie za pomocą różnych metod, ale bez powodzenia.Python 3.4: kompilacja modułu cython dla 64-bitowych okien

Po wielu prób i błędów, to nie skompilować z

python setup.py build_ext --inplace --compiler=mingw32 

ale oczywiście, że nie będzie współpracować z 64-bitowym pytona.

Z MSVC jako kompilatora, błąd jest

File "C:\Python34\lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall 
raise ValueError(str(list(result.keys()))) 
ValueError: ['path'] 
  • Windows 7
  • Microsoft Windows SDK dla systemu Windows 7 i .NET Framework 4 zainstalowany
  • Wydaje się, że niektóre Microsoft Visual Studio 10.0 w C: \ Program Files (x86) (w tym vcvarsall.bat)

Rozwiązania, które nie obracają się Wokół distutils są również mile widziane.

--- EDIT: Dodatkowe informacje

Mam teraz zmodyfikowany distutils rozpoznać MinGW-W64 jak na http://bugs.python.org/issue11723. Następnie wykonane libpython34.a użyciu gendef i dlltool, ale pojawia się błąd

c:\Python34\libs/libpython34.a: file not recongnized: File truncated 

gdy uruchomiony

python setup.py build_ext --inplace --compiler=mingw64 
+0

Dlaczego nie zainstalować 64-bitowy toolchain z mingw? – MattDMo

+0

Któryś ze szczególnie polecasz? O ile widziałem, jest kilka ... Mam zainstalowany mingw-w64, ale distutils nie oferuje go jako opcji, więc przypuszczam, że jest coś więcej? – sjp

Odpowiedz

4

Ok, w końcu udało mi się tego dokonać.

Kluczowe są fantastyczne zasoby autorstwa Christopha Gohlke (http://www.lfd.uci.edu/~gohlke/pythonlibs).

  1. zainstalować żądany wersji Pythona w konwencjonalny sposób
  2. zainstalować żadnych rozszerzeń potrzebne ze strony GOHLKE za
  3. Zainstaluj MinGW-W64 z http://tdm-gcc.tdragon.net/download
  4. krosowe distutils zgodnie http://bugs.python.org/issue11723
  5. zainstalować odpowiednią wersję libpython ze strony Gohlkego
  6. Twój wujek Boba

(Wypróbowałem wiele różnych sugestii dotyczących tego zadania, przeszedłem o wiele więcej kroków, ale o ile wiem, są to jedyne, które faktycznie zmieniły się w końcu)

+0

, aby zastosować ją również do najnowszej wersji MinGW-w64, należy nieznacznie zmienić łatkę i usunąć wszystkie parametry -mno-cygwin z cygwinccompiler.py, patrz: http://stackoverflow.com/questions/6034390/compiling-with- cython-and-mingw-generated-gcc-error-unrecognized-command-line-o/6035864 # 6035864 –