2011-08-08 53 views
7

Tôi đang gặp khó khăn khi cài đặt Cython trên Windows 7 x64. Tôi đã tải xuống và cài đặt automated MinGW installer. Các tạo một distutils.cfg vào thư mục distutils với các nội dung sau đây:Cython sẽ không biên dịch trên Windows 7 x64

[build] 
compiler = mingw32 

Sau khi thêm C:\MinGW\bin đến các biến môi trường, tôi gọi easy_install Cython nhưng tôi nhận được các lỗi sau đây. Raping internet đã không thực sự cho tôi hữu ích resulsts như tất cả các công cụ biên dịch này (hoặc tôi nên nói sh * t?) là rất mới với tôi.

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 

Bất kỳ ý tưởng gì sai? Cảm ơn !

CẬP NHẬT: Tôi đã sử dụng dlltools để tạo libpython27.a và sau đó lại cố gắng xây dựng Cython và nó hoạt động tốt! Nhưng bây giờ, gọi cython.exe mang lại lỗi này:

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

Tôi giả định này là vì tôi sử dụng Pythonx64 nhưng trình biên dịch MinGW32? Vì vậy, làm thế nào tôi có thể biên dịch nó cho x64?

+0

@lance Bạn đã thay đổi điều gì? // ah tiêu đề. –

+1

Tiêu đề. Bạn có thể xem tóm tắt các chỉnh sửa sửa đổi bằng cách nhấp vào văn bản "X phút trước" xuất hiện trực tiếp sau từ "đã chỉnh sửa" phía trên hình đại diện của tôi ở trên. – lance

+1

Tuyệt vời, không biết rằng xD Cảm ơn –

Trả lời

10

Có các gói Cython được biên dịch trước on this site. Tôi muốn đề nghị bạn chuyển sang x86 Python, bạn không đạt được lợi thế thực sự nào bằng cách sử dụng phiên bản x64. Nếu bạn muốn gắn bó với x64, bạn không thể sử dụng MingW và bạn phải sử dụng trình biên dịch 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, thay đổi thành x86. Cảm ơn bạn ! –

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