Windows 上通過 pip 安裝 python 包,經常會出現這種錯誤。
如:pip install pyodbc。
這種錯誤的簡單明了解釋就是:python 編譯器找不到計算機上面的 VC 編譯器。
解決辦法網上也是千奇百怪,我也是數次遇到這個問題,但是一直都沒記錄,每次都是花費N多時間來解決,今天就記錄下解決辦法。
首先出問題的開發環境:
python: Python 3.4
計算機: windows 8 or windows 10 or windows server 2012 (都為64位)
首先說下這個錯誤的根本原因:計算機上沒有安裝 visual studio c++。
而 visual studio c++ 的版本和 python 的版本又有很多,所以網上有很多針對性的解決辦法,但是并不能解決自己的問題。
----------------------------------------------------------------------------
那么 可以不可以不安裝 visual studio c++ 呢,因為太麻煩了!
可以的,所以最完美的解決 辦法是下載 相應包的 .wsl 文件,本地安裝。
比如 Pyodbc,再這里下載對應版本的 .wsl 文件:https://pypi.python.org/pypi/pyodbc/4.0.21
把下載下來的的 .wsl 文件放在C盤下,再使用 pip 安裝:pip install XXX.wsl
如果可以安裝 wsl 的文件呢,因為這種類型的安裝包是編譯好的,所以不需要 VC ++ 來再次編譯的!
這種方法是最完美 的,如果按照這種方法安裝成功了,就 沒必須再繼續讀這篇文章了!
----------------------------------------------------------------------------
首先解決核心是安裝 visual studio c++,而安裝 visual studio c++的途徑又有2種,可以自己選一種:
- 安裝 visual studio 2015 或 visual studio 的其他版本。這種方法優點是簡單暴力,缺點是需要安裝太多無關東西了。
- 安裝 相應的 visual studio c++ 獨立包。優點是安裝到電腦上的東西少,缺點是可能需要針對計算機的版本來下載對應的獨立安裝程序。
下面介紹下2個 visual studio c++ 獨立包:
- 如果電腦操作系統是 windows 8 or windows 10 or windows server 2012 (都為64位)中的一種,安裝 windows 8 SDK:https://developer.microsoft.com/en-us/windows/downloads/windows-8-1-sdk
- 如果操作系統是 win7 或者更老的,則可以選擇安裝 windows 7 SDK:https://blogs.msdn.microsoft.com/pythonengineering/2016/04/11/unable-to-find-vcvarsall-bat/
------------------------------------------------------------------
好,如果你閱讀到這里,相信已經安裝上了 visual c++。
之后就是要讓 python 的編譯器找到 visual c++ 的位置,這里也有2種方法,可以任選一種:
-
set SET VS100COMNTOOLS=%VS140COMNTOOLS% ,注意這個命令是再 pip install XXX 前面執行的,執行完后關閉cmd,再執行 pip install XXX(或者不用關閉cmd?記不太清楚了)
- 修改MSVCCompiler函數:vc_env = query_vcvarsall(VERSION, plat_spec) 為 vc_env = query_vcvarsall(14.0, plat_spec),再執行 pip install XXX
14.0 為 vc++ 的版本號:
Visual Studio 2010 (VS10):SET VS100COMNTOOLS=%VS100COMNTOOLS%
Visual Studio 2012 (VS11):SET VS100COMNTOOLS=%VS110COMNTOOLS%
Visual Studio 2013 (VS12):SET VS100COMNTOOLS=%VS120COMNTOOLS%
Visual Studio 2015 (VS15):SET VS100COMNTOOLS=%VS140COMNTOOLS%
------------------------------------------------
要是還沒有解決?請不要在文章下面留言(感謝解決問題的可以留言),因為每個人都 計算器系統和python 版本不同,32位又或者是64位,都不同,不過可以給你建議看看這幾個:
https://github.com/mkleehammer/pyodbc/issues/77
https://stackoverflow.com/questions/28251314/error-microsoft-visual-c-10-0-is-required-unable-to-find-vcvarsall-bat
https://www.zhihu.com/question/26857761
祝你順利。
文章列表