2012-06-07 20 views
6

Tôi đã cài đặt PyCrypto trên Windows qua pip nhưng tôi không thể xây dựng Crypto.PublicKey._fastmath vì không tìm thấy GMP.Xây dựng PyCrypto bằng fastmath (gmp hoặc mpir) qua pip trên Windows

Tôi biết có một phiên bản nhị phân trên voidspace nhưng tôi muốn xây dựng phiên bản mới nhất của PyCrypto

+0

Phiên bản Windows nào? 32 bit hoặc 64 bit? – SquareRootOfTwentyThree

+0

Windows7 64-bit – scherlock

+0

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 –

Trả lời

5

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.

  1. 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.
  2. Đả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\binMingGW\msys\1.0\bin.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. Đặt biến số môi trường CPPFLAGS vào thư mục MPIR, chứa mpir.h.
  9. 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'])

  10. 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

  11. Execute python setup.py build -c mingw32. Bạn sẽ không thấy lỗi nào.
  12. Thực hiện python setup.py test để xác minh rằng mọi thứ đều ổn.
  13. 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.
  14. 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.

+1

Bạn không phải thực hiện các bước ** 5 ** và ** 9 ** nếu ở bước ** 8 **, bạn đặt các biến môi trường 'CPATH' và' LIBRARY_PATH' thành các giá trị 'CPATH = C: \ ' và 'LIBRARY_PATH = C: \ ' – alldayremix

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