Python3.4 安裝 pycrypto 提示錯誤的處理辦法

來源:互聯網
上載者:User

標籤:就是   放棄   一個   art   準備   ace   根據   pre   python   

今天做介面測試,有個介面的參數使用了 AES 加密,開發也提供了加密函數的實現,但是 Python2.6 實現的,我習慣使用的是 Python3.4,於是準備做下相容處理,結果過程中發現安裝 pycrypto 庫會報錯。

作為測試,定位問題並解決問題乃是我們的強項,於是花了點時間把問題處理了,順便把解決的結果做個記錄,如果後面有同學碰到同樣的問題,也不用重複踩坑了。

先看看我安裝庫用的命令列:

python34 -m pip install pycrypto

下面是報錯資訊:

running build_extwarning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.building ‘Crypto.Random.OSRNG.winrandom‘ extensionerror: Microsoft Visual C++ 10.0 is required. Get it with "Microsoft Windows SDK 7.1": www.microsoft.com/download/details.aspx?id=8279

從報錯資訊看,就是缺少依賴庫檔案,確實,我機器上安裝的是 VS2008,因為用的少一直沒更新,但是提示的是需要 VS2010 支援,總不能因為裝一個庫,我就去裝一個大得多的 VS2010 吧,所以:

方法一:安裝 VS2010,然後設定環境變數

先放棄,實在找不到方法再說。

繼續 Google 發現有同學提供了新的方案:

方法二:卸載 crypto 庫後重新安裝 pycrypto

根據要求依次執行如下命令列:

python34 -m pip uninstall cryptopython34 -m pip install pycrypto

錯誤依舊,報錯資訊也是一字沒改,方法無效

繼續看其他方案:

方法三:升級下 setuptools

我也沒搞定這個和問題有啥關係,但是升級下也沒壞處,升,依次執行如下命令列:

python34 -m pip install --upgrade setuptoolspython34 -m pip install pycrypto

錯誤依舊,報錯資訊也是一字沒改,方法無效

眼瞅著要回頭去找 VS2010 安裝包了,突然發現有人找到了這個庫編譯好的 exe 安裝包,贊,果然還是那句話「有需求的地方,就有人出實現」,就看你能不能找得到了。

方法四:安裝 pycrypto 編譯好的 exe 安裝包

安裝包地址:
http://www.voidspace.org.uk/python/pycrypto-2.6.1/pycrypto-2.6.1.win32-py3.4.exe

親測有效,問題解決。

另外,記得到 Python 安裝目錄下 \Lib\site-packages 去看下,如果 crypto 是全小寫就改成 Crypto,不然引入會報錯。

附上引入代碼:

from Crypto.Cipher import AES

方法四齣處:
75039789

Python3.4 安裝 pycrypto 提示錯誤的處理辦法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.