win系統下python安裝pycrypto包
python版本3.6,系統win10,有安裝過完整的vs2013,通過pip install pycrypto時報錯,提示需要vc++ 14.0,網上查詢了一些解決方法,以下是本人的自身實踐情況
經過檢視網上大體上有三類解決方案:1)安裝vs對應版本。2)安裝mingw。3)安裝已經編譯過的pycrypto包
第一種方法應該是最簡單的,直接安裝vs,但是vs非常龐大,而且非win開發的話,其實安裝這一套工具意義並不大,因此拋棄了第一種。第三種方法貌似比較好,然後網上也提供了對應下載的地址http://www.voidspace.org.uk/python/modules.shtml 不過看了一下,沒有適合python3.6的版本最高只有python3.3的版本,比較無奈,不應該用這麼高版本的。
因此只好使用第三種解決方案,首先http://www.mingw-w64.org/doku.php下載mingw64,並安裝。其次需要http://www.msys2.org/ 下載msys2,裡面提供了bash的一些命令程式,因為在python編譯時,會有一步chmod配置目錄,如果不安裝msys2會有報錯。當然都安裝好以後記得配置環境變數,使得mingw64的bin和lib,msys2/usr/bin和lib可以被找到。
完成安裝後,需要修改python對應的配置。python安裝目錄下的Lib\distutils,修改distutils.cfg(沒有,則建立)增加
如果遇到Unknown MS Compiler version xxxx 的錯誤,修改cygwinccompiler.py[build] compiler = mingw32
增加vcruntime140.dll需要從python的安裝目錄拷貝到mingw的lib目錄中
另外也有網友指出,gcc的編譯引數可能也要修改,需要刪除兩個引數,不過我看了一下我的cygwinccompiler.py中的編譯指令沒有問題,可能3.6版本的已經針對gcc做了改進。這裡將我的編譯引數列給大家
以上修改完之後,再執行pip install pycrypto則安裝成功。self.set_executables(compiler='gcc -O -Wall', compiler_so='gcc -mdll -O -Wall', compiler_cxx='g++ -O -Wall', linker_exe='gcc', linker_so='%s %s %s' % (self.linker_dll, shared_option, entry_point)) # Maybe we should also append -mthreads, but then the finished # dlls need another dll (mingwm10.dll see Mingw32 docs) # (-mthreads: Support thread-safe exception handling on `Mingw32')
安裝完成後,運行了幾個官網上的例子發現nt.py需要修改,將import winrandom 改為 from Crypto.Random.OSRNG import winrandom