Python報錯:Visual C++ is required和ImportError: DLL load failed

九茶發表於2016-02-15

前言:

最近在 Github 裡面找 demo 學習各路大神如何用 Python 破解驗證碼。在安裝 numpy 和 scipy 的過程中遇到一些問題,在此記錄一下,希望對遇到同樣問題的同學有所幫助。

主要的問題有:
1、安裝 numpy 的時候遇到 “unable to find vcvarsall.bat” 和 “Setup script exited with error: Microsoft Visual C++ 9.0 is required”
2、安裝 scipy 時遇到 “error: no lapack/blas resources found”
3、匯入 scipy.spatial.distance 時遇到 “ImportError: DLL load failed”


解決方案:

問題1:

原因:numpy 模組需要用到C++編譯器。
(註釋:64位系統最好不要直接用 easy_install 或者 pip install 安裝模組,預設下載使用的是官方提供的模組,那是面向32位系統的詳見此

方案一:
python是根據檢查環境變數去尋找編譯器路徑的(Visual C++ 9.0對應VS90COMNTOOLS,Visual C++ 10.0對應VS100COMNTOOLS)。如果我們的電腦裡面已經有Visual Studio了,那麼就應該有C編譯器的,檢視系統環境變數即可看到。我們只需要新建一個環境變數指定到該環境變數的路徑上即可。例如我已經有VS2012了,系統的環境變數中已經有VS110COMNTOOLS這個變數了,此時報錯是需要Visual C++ 9.0 則增加一個環境變數:
變數名:VS90COMNTOOLS
變數值:%VS100COMNTOOLS%

注:
VS2003 —————— VS80COMNTOOLS
VS2008 —————— VS90COMNTOOLS
VS2010 —————— VS100COMNTOOLS
VS2012 —————— VS110COMNTOOLS
VS2013 —————— VS120COMNTOOLS
VS2015 —————— VS130COMNTOOLS


方案二:
微軟為 python 提供了C編譯器了:VCForPython。
可自行百度下載,python2.7的可見:VCForPython27.msi
(註釋:64位系統最好使用方案一或方案三)

方案三:
既然說了需要Visual C++,那就去百度下載吧,Visual C++ 9.0對應於Microsoft Visual C++ 2008 Express Edition(32位傳送門64位傳送門)(或者下載vs2008也行)。
安裝完以後可能還會遇到ValueError:
安裝 Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1.exe(傳送門) 即可。
然後複製 /VC/bin/vcvars64.bat/VC/bin/vcvarsamd64.bat/VC/bin/amd64/vcvarsamd64.bat (複製貼上再改個名字)。


問題2:

安裝 scipy 時遇到 “error: no lapack/blas resources found”,一般是因為使用了 “easy_install scipy” 或者 “pip install scipy” 直接下載,注意官方提供的模組時面向32位系統的。(如果32位系統的使用者也遇到了這個問題,那我就不清楚了)
我的解決方案是下載64位的scipy到本地(詳見此),再用 pip install G:/For_Life/360download/numpy-1.11.0b3+mkl-cp27-cp27m-win_amd64.whl 進行安裝。


問題3:

在匯入的時候遇到 “ImportError: DLL load failed” 這個問題,一般是因為64位系統使用了32位的模組(包括該模組和依賴模組)。別擔心,只是部分32位模組在64位系統中無法使用,此時只能下載64位的模組安裝包再安裝了。
例如我是在 “import scipy.spatial.distance” 時報的這個錯誤,問題出在依賴包 numpy 模組上,我重新下載安裝一個64位的numpy模組(詳見此),問題就解決了。


總結:

Python官方提供的模組竟然是面向32位系統的,為此也是折騰了好些時間,以後在安裝模組的時候想必也會留個心眼,長個教訓。
64位系統的模組見此: 64位庫

在此記錄一下我自己遇到的問題,希望對同樣遇到這些坑的朋友有所幫助。



轉載請註明出處,謝謝!(原文連結:http://blog.csdn.net/Bone_ACE/article/details/50668837

相關文章