2014-12-15 9 views
5

Ich habe ein .pyx-Modul, das ich für die Verwendung mit 64-Bit-Python 3.4 unter Windows mit verschiedenen Mitteln, aber ohne Erfolg kompilieren wollte.Python 3.4: kompilieren Cython-Modul für 64-Bit-Windows

Nach viel Versuch und Irrtum, es mit

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

kompilieren, aber natürlich, dass nicht mit 64-Bit-Python funktionieren.

Mit msvc als Compiler, der Fehler ist

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 für Windows 7 und .NET Framework 4 installiert
  • Es scheint einige Microsoft Visual Studio zu sein 10.0 Zeug in C: \ Programme (x86) (einschließlich vcvarsall.bat)

Lösungen, die nicht revolvieren Die Umgebung ist auch willkommen.

--- EDIT: Zusätzliche Informationen

Ich habe jetzt distutils modifiziert mingw-w64 gemäß http://bugs.python.org/issue11723 zu erkennen. Ich habe dann libpython34.a mit GENDEF und dlltool gemacht, aber

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

eine Fehlermeldung erhalten, wenn

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

Warum nicht installieren 64-Bit-Mingw-Toolchain? – MattDMo

+0

Irgendwelche, die Sie besonders empfehlen würden? Soweit ich gesehen habe, gibt es ein paar ... Ich habe mingw-w64 installiert, aber distutils bietet es nicht als Option an, also nehme ich an, dass es mehr gibt? – sjp

Antwort

4

Ok läuft, endlich habe ich es geschafft, es Arbeit zu machen.

Die fantastischen Ressourcen von Christoph Gohlke (http://www.lfd.uci.edu/~gohlke/pythonlibs) sind der Schlüssel.

  1. Installieren Sie die gewünschte Python-Version auf herkömmliche Weise
  2. alle Erweiterungen installieren Sie von Gohlke Website brauchen
  3. installieren MinGW-w64 von http://tdm-gcc.tdragon.net/download
  4. Patch-distutils gemäß http://bugs.python.org/issue11723
  5. die entsprechende Version installieren von libpython von Gohlkes Seite
  6. Bobs Yer Onkel

(Ich habe alle möglichen wilden Vorschläge für diese Aufgabe versucht, ich bin durch viele weitere Schritte gegangen, aber soweit ich sagen kann, sind dies die einzigen, die am Ende wirklich einen Unterschied machten)

+0

um es auch auf die neueste Version von MinGW-w64 anzuwenden, müssen Sie den Patch leicht ändern und alle -mno-cygwin-Parameter aus cygwinccompiler.py entfernen siehe: http://stackoverflow.com/questions/6034390/compiling-with- cython-and-mingw-produziert-gcc-error-unrecognized-command-line-o/6035864 # 6035864 –