Python報錯:Visual C++ is required和ImportError: DLL load failed
前言:
最近在 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)
相關文章
- 關於python安裝dlib報錯“ ImportError: DLL load failed”的解決方法之一PythonImportErrorAI
- IDEA 報錯Failed to load JVM DLLIdeaAIJVM
- ImportError: DLL load failed while importing _cext: 找不到指定的模組ImportErrorAIWhile
- 啟動IDEA 報 failed to load jvm dll XXX 錯誤IdeaAIJVM
- 啟動uwsgi報錯ImportError: No module named, unable to load appImportErrorAPP
- 【Intellij IDEA】開啟IDEA時錯誤:Failed to load JVM DLL ...\jvm.dllIntelliJIdeaAIJVM
- load d3dcompiler_46.dll failed3DCompileAI
- 啟動idea時, 碰到"failed to load jvm DLL ..."錯誤 解決方案IdeaAIJVM
- 啟動idea時, 碰到 "failed to load JVM DLLIdeaAIJVM
- 啟動 idea 彈出“Failed to load JVM DLL\bin\server\jvm.dll”錯誤的解決方法IdeaAIJVMServer
- gevent安裝錯誤解決方案:Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"ROSC++UI
- Python django報錯ImportError: cannot import name find_specPythonDjangoImportError
- (20201029Solved)ImportError: DLL load failed while importing _multiarray_umath: 找不到指定的模組ImportErrorAIWhile
- idea系列:解決啟動 failed to load JVM DLL 提示IdeaAIJVM
- IDEA提示failed to load JVM DLL的解決辦法IdeaAIJVM
- Python安裝MySQL庫詳解(解決Microsoft Visual C++ 9.0 is required )PythonMySqlROSC++UI
- 報錯資訊ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by............)ImportErrorC++UI
- Python報錯:TypeError: a bytes-like object is required, not ‘str‘PythonErrorObjectUI
- 啟動idea報Failed to load JVM DLL..jre\bin\jvm.dll,If you already have 32-bit JDK installedIdeaAIJVMJDK
- 啟動intellij時報錯Failed to load JVM DLL..jre\bin\jvm.dll,If you already have 32-bit JDK installedIntelliJAIJVMJDK
- android studio安裝完後,開啟提示failed to load jvm dllAndroidAIJVM
- 啟動 Eclipse 彈出“Failed to load the JNI shared library jvm.dll”錯誤的解決方法!EclipseAIJVM
- windows下scrapy安裝問題,以及Twisted安裝報錯(error: Microsoft Visual C++ 14.0 is required.)完美解決辦法WindowsErrorROSC++UI
- 使用 Visual Studio 來除錯 dll 檔案除錯
- 啟動Eclipse的時候報錯Failed to load the JNI shared library..EclipseAI
- 在 Visual C++ 中 建 立 MFC 擴 展 DLL (轉)C++
- 【轉】啟動 Eclipse 彈出“Failed to load the JNI shared library jvm.dll”錯誤的解決方法!...EclipseAIJVM
- Importerror : matplotlib is required for plotting when the default backend “matplotlib“ is backwardImportErrorUI
- lib 安裝失敗,error Microsoft Visual C++ 14.0 is required.ErrorROSC++UI
- pip報importError錯誤的一些情況ImportError
- 【故障】安裝完Pycharm,啟動時碰到"failed to load jvm dll"的解決方案PyCharmAIJVM
- tensorflow2.x 報錯 Could not load dynamic library 'cudart64_101.dll'Dart
- asm報錯一例-support 報錯rename failedASMAI
- [渲染層網路層錯誤] Failed to load local font resource ?AI
- ftp 報錯 550 Failed to open fileFTPAI
- zabbix報錯fping failed:no outputAI
- C++ DLL注入和程式碼注入C++
- Android switch語句報錯Constant expression requiredAndroidExpressUI