运行Python脚本时找不到vcvarsall.bat
我在使用Vista系统,版本是Python 2.6.4。我在用一个软件,这个软件里有一个Python脚本,但遇到了这样的提示:
cannot find vcvarsall.bat
于是,我安装了Visual C++ 2010。但文件还是找不到——其实它是存在的。我猜测(这只是个很不专业的猜测……)可能是某个地方的路径设置错了,因为我还有一个旧的Visual 2008文件夹(里面几乎没东西)。我不知道该在哪里修改新的路径。是要在注册表里改,还是在脚本里改?或者在别的地方?
18 个回答
解决这个问题的方法是设置以下环境变量:
VS90COMNTOOLS
比如说:
set VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools
这个错误可能是因为你在安装Visual Studio之后没有重启电脑,或者在安装后没有打开新的命令提示符窗口。
另外,你用来编译扩展的Visual Studio版本可能还要看你正在为哪个版本的Python进行构建。
这里有一个简单的解决办法。我使用的是Python 2.7和Windows 7。
你想安装的东西需要一个C/C++编译器,但Python找不到它。很多Python的包其实是用C/C++写的,需要编译才能使用。vcvarsall.bat是用来编译C++的,而pip假设你的电脑可以做到这一点。
首先,试着升级一下setuptools,因为6.0及以上版本会自动检测编译器。你可能已经有编译器了,但Python找不到。打开命令行,输入:
pip install --upgrade setuptools
现在再试着安装你的包:
pip install [yourpackagename]
如果还是不行,那就肯定是你没有编译器,所以需要安装一个:
http://www.microsoft.com/en-us/download/details.aspx?id=44266现在再试一次:
pip install [yourpackagename]
这样应该就可以了。
看起来Python在找Visual Studio 2008。我遇到了一个问题,就是它找不到vcvarsall.bat,尽管这个文件已经在路径里了。
后来发现,Visual Studio 2010会创建一个叫做环境变量:
SET VS100COMNTOOLS=C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\
解决这个问题的方法是创建一个叫VS90COMNTOOLS
的变量,并让它指向你的Visual Studio 2010的公共工具文件夹,比如:
SET VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\
这样就解决了我的问题,现在我可以用Visual Studio 2010的编译器来构建软件包了。
你也可以通过下面的命令,把VS90环境变量设置为指向VS100环境变量:
SET VS90COMNTOOLS=%VS100COMNTOOLS%