您的位置:首页 > 编程语言 > C语言/C++

Python报错:Visual C++ is required和ImportError: DLL load failed

2016-02-15 17:19 429 查看

前言:

最近在 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: