2014-12-15 20 views
5

Tôi có một mô-đun .pyx mà tôi đã cố gắng biên dịch để sử dụng với python 64 bit 3.4 trên Windows thông qua nhiều phương tiện nhưng không thành công.Python 3.4: biên dịch mô-đun cython cho các cửa sổ 64 bit

Sau rất nhiều thử và sai, nó biên dịch với

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

nhưng tất nhiên, đó sẽ không làm việc với 64-bit python.

Với msvc như trình biên dịch, lỗi này là

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 cho Windows 7 và .NET Framework 4 cài đặt
  • Có vẻ như một số Microsoft Visual Studio 10.0 công cụ trong C: \ Program Files (x86) (bao gồm vcvarsall.bat)

Giải pháp không revolv e xung quanh distutils cũng được chào đón.

--- EDIT: Thông tin bổ sung

bây giờ tôi đã sửa đổi distutils nhận mingw-w64 theo http://bugs.python.org/issue11723. sau đó tôi làm libpython34.a sử dụng gendef và dlltool, nhưng nhận được một lỗi

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

khi chạy

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

Tại sao không cài đặt 64-bit mingw toolchain? – MattDMo

+0

Bất kỳ ai đặc biệt bạn muốn giới thiệu? Theo như tôi đã thấy có một vài ... Tôi đã cài đặt mingw-w64, nhưng distutils không cung cấp nó như là một lựa chọn, vì vậy tôi cho rằng có nhiều hơn cho nó? – sjp

Trả lời

4

Ok, sau cùng tôi quản lý để làm cho nó làm việc.

Tài nguyên tuyệt vời của Christoph Gohlke (http://www.lfd.uci.edu/~gohlke/pythonlibs) là chìa khóa.

  1. Cài đặt phiên bản Python mong muốn của bạn theo cách thông thường
  2. Cài đặt bất kỳ phần mở rộng bạn cần từ trang web Gohlke của
  3. Cài đặt MinGW-w64 từ http://tdm-gcc.tdragon.net/download
  4. distutils patch theo http://bugs.python.org/issue11723
  5. Cài đặt phiên bản thích hợp của libpython từ trang web của Gohlke
  6. yer của Bob

(Đang thử tất cả các đề xuất hoang dã cho tác vụ này, tôi đã trải qua nhiều bước khác nhưng theo như tôi có thể biết, đây là những bước duy nhất thực sự tạo ra sự khác biệt ở cuối)

+0

cũng áp dụng cho phiên bản mới nhất của MinGW-w64 bạn phải thay đổi chút ít bản vá và xóa tất cả thông số -mno-cygwin khỏi cygwinccompiler.py xem: http://stackoverflow.com/questions/6034390/compiling-with- cython-and-mingw-produce-gcc-lỗi-không được công nhận-command-line-o/6035864 # 6035864 –

Các vấn đề liên quan