2014-12-15 42 views
5

Ho un modulo .pyx che ho cercato di compilare per l'uso con 64-bit python 3.4 su Windows con vari mezzi ma senza successo.Python 3.4: compilare il modulo cython per finestre a 64 bit

Dopo un sacco di tentativi ed errori, non compilare con

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

ma, naturalmente, che non funziona con 64-bit di pitone.

Con msvc come il compilatore, l'errore è

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 per Windows 7 e .NET Framework 4 installato
  • Sembra che ci sia un po 'di Microsoft Visual Studio 10.0 in C: \ Programmi (x86) (incluso vcvarsall.bat)

Soluzioni che non funzionano anche le distutili sono ben accette.

--- EDIT: Ulteriori informazioni

Ora ho modificato distutils riconoscere mingw-W64 come da http://bugs.python.org/issue11723. Allora ho fatto libpython34.a utilizzando gendef e dlltool, ma ottengo un errore

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

durante l'esecuzione

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

Perché non installare il Toolchain mingw a 64 bit? – MattDMo

+0

Qualcuno in particolare consiglieresti? Per quanto ho visto ce ne sono alcuni ... Ho installato mingw-w64, ma distutils non lo offre come opzione, quindi suppongo che ci sia dell'altro? – sjp

risposta

4

Ok, finalmente sono riuscito a farlo funzionare.

Le fantastiche risorse di Christoph Gohlke (http://www.lfd.uci.edu/~gohlke/pythonlibs) sono la chiave.

  1. Installare la versione di Python desiderato in modo convenzionale
  2. Installare eventuali estensioni ti servono da sito di Gohlke
  3. Installare MinGW-W64 da http://tdm-gcc.tdragon.net/download
  4. distutils Patch secondo http://bugs.python.org/issue11723
  5. installare la versione appropriata di libpython dal sito di Gohlke
  6. Zio di Bob

(Esaminando tutti i tipi di suggerimenti selvaggi per questa attività, ho eseguito molti più passaggi ma, per quanto posso dire, questi sono gli unici che in realtà hanno fatto la differenza)

+0

per applicarlo anche alla versione più recente di MinGW-w64, è necessario modificare leggermente la patch e rimuovere tutti i parametri di -mno-cygwin da cygwinccompiler.py vedere: http://stackoverflow.com/questions/6034390/compiling-with- Cython-e-mingw-produce-gcc-error-riconosciuto-comando-line-o/6.035.864 6.035.864 # –