基本環境:
1.python34
2.win32系統
3.VisualStudio 2008
使用easy_install安裝numpy時,提示:
“error: Setup script exited with error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat).”
根據網上的資料查看C:\Python34\Lib\distutils\msvc9compiler.py的內容
該檔案通過檢索註冊表來找到vcvarsall.bat的安裝目錄,該檔案檢索的註冊表路徑為
‘Software\Microsoft\VisualStudio\10.0\SETUP\VC’,擷取其下的登錄機碼:ProductDir對應的值
本機環境已安裝了vs 2008,對應的註冊表路徑為’Software\Microsoft\VisualStudio\9.0\SETUP\VC’
通過修改C:\Python34\Lib\distutils\msvc9compiler.py中第187行:
return majorVersion + minorVersion
改為
return 9.0
這次出現新的錯誤:
File “C:\Python34\lib\distutils\msvc9compiler.py”, line 287, in query_vcvarsall
raise ValueError(str(list(result.keys())))
ValueError: [‘path’]
查看query_vcvarsall函數,這個函數是在尋找系統內容變數
interesting = set(("include", "lib", "libpath", "path"))
環境變數得包含這四種,少了都會報錯
繼續研究代碼,發現py在找這幾個檔案(352行)
self.cc = "cl.exe"self.linker = "link.exe"self.lib = "lib.exe"self.rc = "rc.exe"self.mc = "mc.exe"
找到這幾個檔案的路徑,並建立環境變數
lib=C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\
libpath=C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\
include=C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\
繼續出現新的錯誤:
File “numpy\core\setup.py”, line 686, in get_mathlib_info
RuntimeError: Broken toolchain: cannot link a simple C program
最後請下載numpy-1.9.2-win32-superpack-python3.4.exe進行安裝,這次很順利,一次成功