运行Python脚本时找不到vcvarsall.bat

60 投票
18 回答
110369 浏览
提问于 2025-04-15 21:46

我在使用Vista系统,版本是Python 2.6.4。我在用一个软件,这个软件里有一个Python脚本,但遇到了这样的提示:

cannot find vcvarsall.bat

于是,我安装了Visual C++ 2010。但文件还是找不到——其实它是存在的。我猜测(这只是个很不专业的猜测……)可能是某个地方的路径设置错了,因为我还有一个旧的Visual 2008文件夹(里面几乎没东西)。我不知道该在哪里修改新的路径。是要在注册表里改,还是在脚本里改?或者在别的地方?

18 个回答

14

解决这个问题的方法是设置以下环境变量:

VS90COMNTOOLS

比如说:

set VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools

这个错误可能是因为你在安装Visual Studio之后没有重启电脑,或者在安装后没有打开新的命令提示符窗口。

另外,你用来编译扩展的Visual Studio版本可能还要看你正在为哪个版本的Python进行构建。

27

这里有一个简单的解决办法。我使用的是Python 2.7和Windows 7。

你想安装的东西需要一个C/C++编译器,但Python找不到它。很多Python的包其实是用C/C++写的,需要编译才能使用。vcvarsall.bat是用来编译C++的,而pip假设你的电脑可以做到这一点。

  1. 首先,试着升级一下setuptools,因为6.0及以上版本会自动检测编译器。你可能已经有编译器了,但Python找不到。打开命令行,输入:

    pip install --upgrade setuptools

  2. 现在再试着安装你的包:

    pip install [yourpackagename]

  3. 如果还是不行,那就肯定是你没有编译器,所以需要安装一个:
    http://www.microsoft.com/en-us/download/details.aspx?id=44266

  4. 现在再试一次:

    pip install [yourpackagename]

这样应该就可以了。

44

看起来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%

撰写回答