2012-06-07 64 views
6

我通過pip在Windows上安裝了PyCrypto,但是我無法構建Crypto.PublicKey._fastmath,因爲找不到GMP。在Windows上通過pip建立PyCrypto與fastmath(gmp或mpir)

我知道有上voidspace二進制版本,但我想打造的最新版本PyCrypto

+0

哪個Windows版本? 32位或64位? – SquareRootOfTwentyThree

+0

Windows7 64位 – scherlock

+0

更簡單的解決方案在這裏:http://stackoverflow.com/questions/15432010/exception-while-installing-packages-in-python/30620019#30620019 –

回答

5

下一個是一個的方式來實現自己的目標。還有其他一些可能更好的方法(例如基於Visual Studio),但這個方法已經爲我工作了。此外,它不使用pip

所有操作都在命令提示符下執行。

  1. 安裝Mingw,包括MSYS和開發工具包。這會給你一個相當完整的類Unix開發環境。
  2. 確保Mingw二進制文件位於PATH環境變量中。您需要MinGW\binMingGW\msys\1.0\bin
  3. 在臨時目錄下載MPIR來源。你很重要,不是使用2.5.1,因爲會破壞構建的錯誤。 2.5.0很好。
  4. 構建MPIR庫。這很簡單:執行bash configure,然後make
  5. HACK#1libmpir.ampir-2.5.0\.libs轉換爲C:\Python2.7.1\libs。這是必要的,因爲distutils已損壞,我無法找到將其導向到正確的庫位置的方法。
  6. HACK#2編輯C:\Python2.7.1\Lib\distutils\cygwincompiler.py並刪除字符串-mno-cygwin的任何發生。原因解釋here
  7. 下載PyCrypto來源並將它們解壓到另一個臨時目錄中。
  8. 設置CPPFLAGS環境變量爲MPIR目錄,其中包含mpir.h
  9. HACK 3編輯setup.pybuild_extension方法中添加下列行:

    自.__ add_compiler_option(os.environ [ 'CPPFLAGS'])

  10. 運行bash configure。您應該看到兩行說:

    在-lgmp檢查__gmpz_init ......沒有
    檢查__gmpz_init在-lmpir ...是

  11. 執行python setup.py build -c mingw32。你應該看到沒有錯誤。
  12. 執行python setup.py test驗證一切正常。
  13. 執行python setup.py install將文件複製到您的本地Python存儲庫。
  14. 或者,運行python setup.py bdist_wininst來創建安裝程序。

我真的很討厭所有的黑客,我很想聽聽他們是否可以避免。

+1

你不必做步驟** 5 **和** 9 **如果在步驟** 8中將CPATH和LIBRARY_PATH環境變量設置爲CPATH = C:\ 和LIBRARY_PATH = C:\ ' – alldayremix