close

 

【碼農】在 Windows 平台上解決 pip 安裝套件出現

通常來說在已經安裝 Python(3) 環境下,使用 pip(3) 指令就能安裝 Python 套件,不過在 Windows (10) 平台上,有時候會遇到如以下的問題:

error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

然後呢,如果按照提示,傻傻的到 https://visualstudio.microsoft.com/visual-cpp-build-tools/ 下載安裝「Microsoft Visual C++ Build Tools」,那麼絕對是 100% 無法解決。於是你再用這些關鍵字丟到 Google 大神,又會遭遇到一連串教學鬼打牆,最終一定是不幸卡關了。這問題追根究底的原因是微軟造成的,刪除對舊版的支援,導致大部分的教學已經過時了。

然而,即使千辛萬苦的使用旁門左道,下載並成功安裝 Microsoft Visual C++ Build Tools,卻還是可能會遇到 pip 安裝失敗的問題。這個問題足足搞了一天才搞定,實在是很機機歪歪令人惱火,我 OO 你 XX 的微軟@#$&*!

這篇文章就是紀錄如何解決 Windows 環境下 pip 安裝部分套件的遇到上述問題,以及如何從微軟官網下載對應的 Microsoft Visual C++ Build Tools 工具版本。

【碼農】在 Windows 平台上解決 pip 安裝套件出現

ㄧ、下載對應的 Microsoft Visual C++ Build Tools 完整版

目前網路上的教學是搜尋下載 visualcppbuildtools_full.exe (3.3MB)並執行安裝,然而現在這個方式已經行不通了,會出現套件遺失的錯誤而失敗卡關。

以下是我個人親身嘗試,目前(撰寫本文時)可行的方法。

1. 登入 https://my.visualstudio.com/Downloads (必須要有微軟的帳號,沒有帳號的話可免費註冊一個)。依照以下 1.輸入 Build Tools 2.按搜尋 3.勾選左邊的 Visual Studio 2015 Update 3

【碼農】在 Windows 平台上解決 pip 安裝套件出現

勾選左邊的項目之後,右邊只會剩下兩個項目(下圖)。在 「Visual C++ Build Tools......」 這個項目 1.下拉選 DVD 2.點擊 Download

【碼農】在 Windows 平台上解決 pip 安裝套件出現

最後會得到一個 mu_visual_cpp_build_tools_2015_update_3_x64_dvd_dfd9a39c.iso 檔案,大小為 1,162,338,304 bytes (約 1.1 GB),MD5 值:d3416c7e6690f87299b1c0cd2d896db9。

iso 檔案高達 1.1 GB,象徵它才是正統的離線安裝,也說明微軟的在線安裝其實並不可靠,很容易過時失效。

2. 掛載 .iso 檔,執行 iso 檔根目錄下的 VisualCppBuildTools_Full.exe,即可進行安裝。預設值就行了(微軟官方建議使用自訂安裝,並且勾選 Windows 10 SDK 項目) ,大約要十幾分鐘。

【碼農】在 Windows 平台上解決 pip 安裝套件出現

3. 安裝完畢之後,還要設定使用者環境變數:依照下圖 1. -> 6. 設定使用者環境變數:

名稱:VCINSTALLDIR
路徑:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC

環境變數.png

4. 開啟終端機視窗,執行指令:

set CL=/FI"%VCINSTALLDIR%\INCLUDE\stdint.h" %CL%

經上述一輪操作之後,理論上應該解決了 pip 安裝部分套件出現「error: Microsoft Visual C++ 14.0...」的問題。

如果出現:

LINK: fatal error LNK1158: cannot run 'rc.exe'

解決方式:

C:\Program Files (x86)\Windows Kits\ 底下搜尋 rc.exe,找到對應的版本(EX: x64)之後,將 rc.exe 與同目錄下的 rcdll.dll,一起複製到 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\ 目錄下。

 

二、測試

以 pip 安裝 pycrypto 進行測試:

set CL=/FI"%VCINSTALLDIR%\INCLUDE\stdint.h" %CL%
pip install pycrypto

貼上的影像_2021_10_15_下午4_01.png

若沒再出先紅字的錯誤,表示套件安裝完成。接下來測試套件是否正常

執行 python ,輸入 from Crypto.Cipher import AES,如果沒有出現「ModuleNotFoundError: No module named 'xxxx'」,就表示套件安裝與設置完成。

三、移植套件

以 pycrypto 為例,在 Windows 下歷經千辛萬苦,終於把 pycrypto 裝起來了。這時候可以到 site-packages\ 底下(即 Python 套件的目錄),將 Crypto 與 pycrypto-x.x.x-pyx.x.egg-info 備份起來。

【碼農】在 Windows 平台上解決 pip 安裝套件出現

下次在別台 Windows 10 上想要安裝 pycrypto 套件時,只要先把 Python(3) 裝好,再把這兩個目錄複製過去就能搞定,可以直接省略一大串下載安裝 Microsoft Visual C++ Build Tools 1.1 GB 的騷操作。要注意的是,套件有對應 Python 版本之分,例如先前在 Python3.8 安裝並備份完成的套件,只能移植到另一個 Python3.8 的環境,若強行移植到 3.9/3.10 時,引入套件會發生錯誤 。

最佳解法:pycrypto 在安裝與使用上如果還是發生其他問題,例如 PY_SSIZE_T_CLEAN 錯誤、rc.exe 執行錯誤等等,可以直接改用安裝 pycryptodome ,不僅語法一模一樣,更不需要安裝亂七八糟的微軟 Build Tools 套件,即可藥到病除。

參考網址:[python] pycrypto AES加密 on windows 10Crypto、PyCrypto、PyCryptodome 傻傻分不清楚SystemError: PY_SSIZE_T_CLEAN macro must be defined for '#' formats

arrow
arrow
    創作者介紹
    創作者 benjenq 的頭像
    benjenq

    -Ben's PHOTO-

    benjenq 發表在 痞客邦 留言(3) 人氣()