彻底解决安装Python扩展包时Unable to find vcvarsall.bat

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fyuanfena/article/details/52038917

windows上如果没有安装 visual studio, 也就是俗称的vs, 在安装一些带有c或者c++代码的python模块的时候, 会报错

此时你可能会尝试:

1.下载二进制安装包

遇到提示说“Python version 2.7 required, which was not found in the registry.” 。错误如图1所示:

\

出现这个问题可能是因为你的OS是64bit的,但是安装的包却一直在32bit的注册表内寻找Python

StackOverfolow上好多高票答案貌似可以解决了,如:http://stackoverflow.com/questions/3652625/installing-setuptools-on-64-bit-windows,这里我就不在赘述了

2.下载源码自己编译

  •  将下载的.zip解压。
  • 打开命令行,进入根目录
  •  输入:setup.py install
  • 最后提示:error: Unable to find vcvarsall.bat


怎么彻底解决 error: Unable to find vcvarsall.bat 呢?

 大坑慎入:

不要按网上说的,安装MinGW,然后在“..python安装路径...\Lib\distutils”下新建一个文件distutils.cfg,在这文件里面指定编译器为mingw32

     如: [build]compiler=mingw32

    原因是什么,可以百度一下mingw是什么,毕竟不是GCC,又不如VC接windows的地气,编译出来的东西,安装上了也有不好使的时候。甚至我遇到MinGW还无法编译greenlet0.4.1,导致greenlet无法源码安装。MinGW经常command 'gcc' failed with exit status 1 或者error: unrecognized command line option '-mno-cygwin'。即使编译通过了,安装上了,你安装的Python标准库不是由mingw编译的,你的扩展包却是mingw编译的,谁也不敢保证完全兼容或者说质量跟得上,说不准一些莫名其妙的神经质错误。


解决方法:

一、去下载安装VS2010

(08版貌似也行,不过没必要用旧版,指不定哪个库又无法编译),给个地址(百度的云盘  国内应该速度可以)

http://pan.baidu.com/share/link?shareid=1609273194&uk=3255422755


   然后注意这一步很重要:命令行下执行 SET VS90COMNTOOLS=%VS100COMNTOOLS%

   如果你安装的是 2012 版 SET VS90COMNTOOLS=%VS110COMNTOOLS%

   如果你安装的是 2013版 SET VS90COMNTOOLS=%VS120COMNTOOLS%

   或者更暴力,直接配置系统环境变量 VS90COMNTOOLS指向 %VS你的版本COMNTOOLS%


   你还可以更暴力,在“..python安装路径...\Lib\distutils目录下有个msvc9compiler.py找到243行  

            toolskey = "VS%0.f0COMNTOOLS" % version  直接改为 toolskey = "VS你的版本COMNTOOLS"


(这个就是为什么要配 ”VS90COMNTOOLS“ 的原因,因为人家文件名都告诉你了是  Microsoft vc 9的compiler,   代码都写死了要vc9的comntools,就要找这个玩意儿,找不到不干活)


   这么做的理由是Python2.7 扩展包是可以用08版或者更高的VS编译的,其setup.py(安装脚本)都是去windows系统寻找08版的VS,所以设置VS90的path

   如果Python版本小于2.7,强烈建议使用 VS08版,用2010或者更高可能部分扩展不好使。给个例子:

    http://stackoverflow.com/questions/6551724/how-do-i-point-easy-install-to-vcvarsall-bat    

这个例子说明 VS2010不适合Python2.6


二、下载一个Microsoft Visual C++ Compiler for Python 2.7的补丁

微软出了一个msi包来解决这个问题:Microsoft Visual C++ Compiler for Python 2.7
下载地址: http://www.microsoft.com/en-us/download/details.aspx?id=44266
安装后,路径是:
C:\Users\[用户名]\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0 ,
可以看到这个路径下就已经有一个vcvarsall.bat 文件了。
此时,如果运行pip install numpy等,还是同样报错,那么就代表你的setuptool的版本太老了,这个 comiler包需要setuptools6.0以上版本才可以(可以在微软页面上查到system requirement)


  三.安装VS后该重启的重启

clean一下之前安装Python扩展失败的残留文件,然后 直接下载源码,解压后python setup.py build发现都可以编译了。接下来就换成 python setup.py install安装吧。

猜你喜欢

转载自blog.csdn.net/fyuanfena/article/details/52038917