您的位置:首页 > 编程语言 > Python开发

python Unable to find vcvarsall.bat

2016-03-16 00:24 639 查看
完美解决 Unable to find vcvarsall.bat 问题。

以 python2.7为例子。

下载 VS2010.然后安装。或者 大于 VS2008 的其他版本。具体情况,试所需编译的 py版本。比如 py2.3的用的是 vc6++。

VS2010安装好以后,网上大部分说可以设置环境变量 VS90COMNTOOLS = %VS100COMNTOOLS%,或者将VS90COMNTOOLS 设置成,VS2010安装目录下面的 VS路径,比如

D:\Program Files\Microsoft Visual Studio 10.0\VC;

在实践的过程照此实验多次,发现大部分是坑。

主要原因有两个 ,第一个 %VS100COMNTOOLS% 这个环境变量所指的方向就不对 ,其指向的地址为 D:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools。

第二个 在环境变量中设置了 VS90COMNTOOLS = “D:\Program Files\Microsoft Visual Studio 10.0\VC” 也无效。

最后还是采用暴力破解:

原理:安装程序或者用Cython来编译.py 文件的时候,会用到 ,python 库中的 D:\Python27\Lib\distutils 模块。来对.py扩展进行编译程 .dll

在此模块下 找到 msvc9compiler.py 文件 ,然后 打开该文件 搜索 “Unable to find vcvarsall.bat” ,此时会定位到两个地方。

第一个是 259 行的 log.debug("Unable to find vcvarsall.bat ") 看上面有一个 if os.path.isfile(vcvarsall): 判断是否为文件。

还有一处是 269 raise DistutilsPlatformError("Unable to find vcvarsall.bat") //此处就是你在 cmd 黑色的屏幕中看到的 那句 Unable to find vcvarsall.bat。

因此可以定位到 问题就处在这里。 看前面判断的是 if vcvarsall is None: 说明 之前那个判断 if os.path.isfile(vcvarsall) 是 false, 因此可以不用管前面 ,直接在 268 处 插入

vcvarsall = r'D:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat' //此文件的全路径 根据安装的 VS路径来确定。

至此ok,在安装或者编译 程序。就ok了。

刚开始的按照网上的 暴力破解 243 行的 toolskey ,将其设置为 D:\Program Files\Microsoft Visual Studio 10.0\VC,测试很久无效。其实主要原因还是出在 isfile的判断上面。是否是因为 路径名中 间 有空格,导致 isfile判断出错。尚未测试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: