python3.5 pip安裝庫,無法找到vcvarsall.bat錯誤?裝VS、改源碼無效

環境:window10 64位、python3.5 32位、VS2015社區版 32位

啟動python顯示MSC 1900版本,對應的應該是VS2015,系統環境變數也已經設置了VS140COMNTOOLS,依然無果,我甚至還設置了VS90COMNTOOLS、VS110COMNTOOLS都映射到VS140COMNTOOLS路徑,依然出錯。

網上找的辦法,配置環境變數-測試無效、修改msv9compiler.py源碼-測試無效

遍尋網路上各種辦法,基本上就上面這兩種,均宣告無效,實在是搞不明白問題出在哪裡。

安裝vs2015,系統自行配置了VS140COMNTOOLS變數,但是我看了下對應的目錄里沒有vcvarsall.bat文件,只有vcvars32.bat這個文件,是不是與此有關,我特意將vcvars32.bat複製一份更名為vcvarsall.bat,系統依然不給面子的提示錯誤。


主要原因是你沒有安裝vc++ 的編譯sdk。。。。

安裝visual studio 2015社區版默認是不安裝c++的編譯sdk的。你需要再次掛載iso

再次點擊這個軟體

再次等待好幾分鐘

開始正文,如下圖選擇「修改」

如下圖勾選相關選項,主要是「編程語言」中的「Visual C++」。

保險一點的勾選「全選」那個選項,畢竟硬碟空間便宜的像不要錢。

這個勾選編程語言,我建議把全選給勾選上,這樣絕對保險

如果我記錯了也會沒關係的,主要是這樣^_^

然後就可以啦,看看文件夾里vcvarsall.bat也出來了,編譯也順暢了

就醬!

內容已經發布在個人博客

再戰error: Unable to find vcvarsall.bat

讓更多的人看到,讓更少的人走彎路!


在最新的VS 2017中,只需要在VS Installer中勾選VC 140編譯器並安裝即可解決此問題。

我順便總結了一下在Python中調用VS 2017編譯器遇到的各種問題的解決方案發在了博客里:

關於Python在VS2017版中編譯C源代碼出現的各種問題解決方法-qysnn

1. 找不到vcvarsall.bat

在VS Installer中安裝VC140編譯器(默認只安了VC141)

2. 找不到io.h,cl.exe,MSVCRT.lib等一切文件的

在C:Program Files (x86)Windows Kits和C:Program Files (x86)Microsoft Visual Studio兩個目錄及其子目錄中手動搜索找不到的文件。要注意幾乎所有的文件都有多個版本(x86、x64、arm等等),注意不要弄混。如果一個文件在子目錄和上級目錄中都有,添加子目錄,不要添加上級目錄。

如果是*.exe,就把此exe所在目錄添加到系統變數PATH中

如果是*.h,就新建系統變數INCLUDE,把這個目錄添加進去

如果是*.lib,就新建系統變數LIB,把這個目錄添加進去

如果添加進去之後出現:無法解析的外部符號、module machine type x64 conflicts with target machine type x86等錯誤,則說明添加的目錄有誤,仔細檢查。

就這樣,它提示找不到什麼你就自己去找到然後添加到系統變數里,大概4-5次之後即可添加所有必須的組件,編譯成功!


搞了半天終於解決了。。。許多方法都是直接安裝對應的vs版本,但是我完成這一步後還是提示錯誤,於是看了下代碼,原因是它是通過註冊表來獲得文件路徑的,但是vs在安裝後好像沒有註冊該路徑???於是自己把路徑粘貼複製過去了,以下是步驟:

1.下載對應的vs版本

借用一下error: Unable to find vcvarsall.bat中的一個答案:

查看編譯版本

對照下載安裝:

MSC v.1000 -&> Visual C++ 4.x

MSC v.1100 -&> Visual C++ 5

MSC v.1200 -&> Visual C++ 6

MSC v.1300 -&> Visual C++ .NET

MSC v.1310 -&> Visual C++ .NET 2003

MSC v.1400 -&> Visual C++ 2005 (8.0)

MSC v.1500 -&> Visual C++ 2008 (9.0)

MSC v.1600 -&> Visual C++ 2010 (10.0)

MSC v.1700 -&> Visual C++ 2012 (11.0)

MSC v.1800 -&> Visual C++ 2013 (12.0)

MSC v.1900 -&> Visual C++ 2015 (14.0)

MSC v.1910 -&> Visual C++ 2017 (15.0)

安裝勾選時注意下,否則根本沒有vcvarsall.bat文件

2.直接修改代碼中的路徑

找到這個文件,我用的Anaconda,路徑為C:Program FilesAnaconda3Libdistutils

打開編輯,仔細閱讀_find_vcvarsall(plat_spec)函數你會發現它的文件路徑是通過註冊表獲得的,但是照著路徑看了下註冊表,emmm,根本沒有。那既然只是個路徑,自己改不就好了嗎,我是python3.5,對應下載了vs2015,文件路徑是C:Program Files (x86)Microsoft Visual Studio 14.0VCvcvarsall.bat,於是注釋掉代碼中獲取路徑的部分,加上這句,保存,大功告成。


各位i大神,我基本嘗試了網上說的各種方法,依舊報錯,win10/python3.5 。C:Program Files (x86)Microsoft Visual Studio 12.0Common7Tools 能找到該文件,我想知道怎麼解決啊,。。。困擾我好幾天了,求幫助。


分割線,在經歷了萬千次的嘗試以後,別整那些沒有的了,設么該版本號,路徑什麼,本本分分的把c++編譯環境裝一遍,輕鬆搞定


好難找


最終找到了。


最小化安裝


推薦閱讀:

用python寫程序時,怎麼知道我想實現的功能有沒有現成的函數?
python爬蟲如何深入學習?

TAG:Python | Python3x | Python庫 | Python教程 |