sau Một là một cách để đạt được mục tiêu của bạn. Có những cách khác, có lẽ tốt hơn (ví dụ: dựa trên Visual Studio), nhưng cách này đã làm việc cho tôi. Ngoài ra, nó không sử dụng pip
.
Tất cả các thao tác được thực hiện trên lời nhắc lệnh.
- Cài đặt Mingw, bao gồm MSYS và Bộ công cụ phát triển. Điều này sẽ cung cấp cho bạn một môi trường phát triển giống như Unix hoàn toàn.
- Đảm bảo rằng các tệp nhị phân Mingw đang ở trong biến môi trường PATH. Bạn cần
MinGW\bin
và MingGW\msys\1.0\bin
.
- Tải xuống MPIR nguồn trong một thư mục tạm thời. Điều quan trọng là bạn làm không sử dụng 2.5.1 do lỗi sẽ phá vỡ bản dựng. 2.5.0 là tốt.
- Xây dựng thư viện MPIR. Điều này khá đơn giản: thực hiện
bash configure
theo sau là make
.
- HACK # 1 Sao chép
libmpir.a
từ mpir-2.5.0\.libs
vào C:\Python2.7.1\libs
. Điều này là cần thiết vì distutils
bị hỏng và tôi không thể tìm cách để hướng nó đến đúng vị trí thư viện.
- HACK # 2 Chỉnh sửa
C:\Python2.7.1\Lib\distutils\cygwincompiler.py
và xóa mọi sự cố xảy ra của chuỗi -mno-cygwin
. Lý do được giải thích here.
- Tải xuống PyCrypto nguồn và giải nén chúng trong một thư mục tạm thời khác.
- Đặt biến số môi trường
CPPFLAGS
vào thư mục MPIR, chứa mpir.h
.
HACK 3 Sửa setup.py
và thêm dòng sau trong build_extension
phương pháp:
tự .__ add_compiler_option (os.environ [ 'CPPFLAGS'])
Run bash configure
. Bạn sẽ thấy hai dòng nói:
kiểm tra __gmpz_init trong -lgmp ... không
kiểm tra __gmpz_init trong -lmpir ... vâng
- Execute
python setup.py build -c mingw32
. Bạn sẽ không thấy lỗi nào.
- Thực hiện
python setup.py test
để xác minh rằng mọi thứ đều ổn.
- Thực thi
python setup.py install
để sao chép tệp vào kho lưu trữ Python cục bộ của bạn.
- Hoặc, hãy chạy
python setup.py bdist_wininst
để tạo trình cài đặt.
Tôi thực sự ghét tất cả các hack khác nhau, và tôi rất muốn nghe nếu chúng có thể tránh được.
Phiên bản Windows nào? 32 bit hoặc 64 bit? – SquareRootOfTwentyThree
Windows7 64-bit – scherlock
Một giải pháp đơn giản hơn tại đây: http://stackoverflow.com/questions/15432010/exception-while-installing-packages-in-python/30620019#30620019 –