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

时间:2010-04-19 11:48:15

标签: python visual-studio-2010

我正在使用Vista,并使用Python 2.6.4。我正在使用一个使用Python脚本的软件,但碰到了消息:

cannot find vcvarsall.bat

所以,我安装了visual c ++ 2010.但是找不到文件 - 但是,它就在那里。我的猜测(一个非常没有受过教育的人......)是路径错误的地方,因为我还有一个旧的视觉2008(非常空)文件夹。我不知道在哪里对新路径进行更改。我是否在注册表或脚本中更改了某些内容?或者在其他地方?

18 个答案:

答案 0 :(得分:42)

似乎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%

答案 1 :(得分:26)

这是一个简单的解决方案。我使用的是Python 2.7和Windows 7。

您尝试安装的内容需要C / C ++编译器,但Python无法找到它。许多Python包实际上是用C / C ++编写的,需要编译。编译C ++需要vcvarsall.bat,pip假设您的机器可以这样做。

  1. 首先尝试升级setuptools,因为v6.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]

  5. 你去吧。它应该适合你。

答案 2 :(得分:14)

此问题的解决方案是设置以下环境变量:

VS90COMNTOOLS

例如:

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

安装Visual Studio后没有重新启动,或者在安装后没有启动新的命令提示符,可能会导致此错误。

您可以用来编译扩展的Visual Studios版本可能取决于您正在构建的python版本。

答案 3 :(得分:9)

2015 中,如果您仍然遇到这个令人困惑的错误,PIP使用的 责备python默认setuptools

  1. 下载并安装从http://www.microsoft.com/en-in/download/details.aspx?id=44266
  2. 编译python 2.7模块所需的最小 Microsoft Visual C ++编译器for Python 2.7
  3. 更新您的设置工具 - pip install -U setuptools
  4. 安装任何需要C编译的python包。 pip install blahblah
  5. 它会正常工作。

    更新:它对所有图书馆都无法正常工作。我仍然会遇到一些需要lib-headers的模块错误。他们唯一能够完美运行的是Linux平台

答案 4 :(得分:6)

这个神秘的错误意味着您没有安装C编译器。 There was a discussion to propose a more explanative erroris continued here,如果您关心它,请注册并发表评论!)但目前仍未实施。

要解决此问题,您可以安装大约需要GB的Visual Studio 2008 SDK,也可以安装非常小的VCForPython27.msi,但目前distutils不支持,这是程序:

1) install Microsoft Visual C++ Compiler for Python 2.7 from
http://www.microsoft.com/en-us/download/details.aspx?id=44266
2) Enter MSVC for Python command prompt
3) SET DISTUTILS_USE_SDK=1
4) SET MSSdk=1
5) you can then build your C extensions: python.exe setup.py ...

在构建C扩展之前,必须每次都复制步骤2到4。这是因为VCForPython27.msi存在问题,它将头文件和vcvarsall.bat安装在与VS2008 SDK不同的文件夹中,从而混淆了编译器对distutils的检测。这将在Python 2.7.10中的setuptools中修复。

Gregory Szorc的错误报告和解决方法: http://bugs.python.org/issue23246

在IPython中使用%% cython magic的更多信息和解决方法:https://github.com/cython/cython/wiki/CythonExtensionsOnWindows

<强> /编辑: 此外,如果您有另一个版本的Python,则不能使用Microsoft Visual C ++ for Python 2.7,这是一种由Microsoft专门为Python 2.7制作的迷你编译器。在这种情况下,您需要安装与您的Python版本匹配的Visual Studio SDK,或者安装具有正确.NET框架版本的Windows SDK。在此处查看更多信息: https://github.com/cython/cython/wiki/CythonExtensionsOnWindows#using-windows-sdk-cc-compiler-works-for-all-python-versions

答案 5 :(得分:5)

这对我有用(python 2.6):

free ms visual studio 2008

安装了http://www.microsoft.com/visualstudio/en-us/products/2008-editions/express

vcvarsall.bat"C:\Program Files\Microsoft Visual Studio 9.0\VC>"复制到"C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\"

安装程序已经设置了此环境变量:

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

答案 6 :(得分:4)

看起来MS已经发布了所需的确切包here。 BurnBit here。安装它,然后在this answer中设置注册表项以指向C:\Users\username\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

答案 7 :(得分:3)

对于WINDOWS用户来说,这是最新的答案 - 非常简单的解决方案。

正如其他人所指出的,问题是python / cython等试图找到它们构建的相同编译器,但计算机上不存在此编译器。大多数情况下,此编译器是visual studio(2008,2010或2013)的一个版本,但是未安装此类编译器,或者安装了较新版本,并且系统阻止安装较旧版本。所以,解决方案很简单:

1)查看C:\ Program Files(x86)并查看是否安装了Microsoft Visual Studio版本,以及它是否比构建Python的版本更新。如果没有,请安装(/更新)构建Python的版本(参见前面的答案),甚至是最新版本,然后按照下一步操作。

2)如果已经安装了最新版本的Microsoft visual studio,我们必须使Python / cython等认为它是构建它的版本。这很简单:转到系统环境变量并创建以下变量(如果它们不存在):

VS100COMNTOOLS

VS110COMNTOOLS

VS120COMNTOOLS

VS140COMNTOOLS

并将这些变量的字段设置为

“C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ Tools”(如果安装了visual studio 2008),或者 “C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ Tools”(如果安装了visual studio 2010)或 “C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ Tools”(如果安装了visual studio 2013)或 “C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ Tools”(如果安装了visual studio 2015)。

此解决方案适用于32位版本的python。它也适用于64位版本,但我没有测试过;最有可能的是,对于64位版本,必须执行以下附加步骤:

3)将路径“C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC”添加到%PATH%环境变量中(根据您的版本更改visual studio的版本号)。

4)从命令行运行“vcvarsall.bat x86_amd64”

就是这样。

答案 8 :(得分:3)

安装Visual C ++是一个很好的第一步,虽然我不能说肯定 2010版本是否可行。无论如何试一试。

在Visual C ++安装目录中查找vcvarsall.bat(对于Visual Studio 2010,它位于ProgramFiles\Microsoft Visual Studio 10.0\VC中)。然后将该目录添加到系统路径。如果您在命令行中执行此操作,则可以尝试:

path %path%;c:\path\to\vs2010\bin

然后再次尝试运行您尝试运行的任何内容。

为了获得更长久的效果,add it in the computer system path settings

答案 9 :(得分:3)

如果您通过快速安装安装了Visual Studio 2015,则vcvarsall.bat不存在。但是你可以去编程和功能,并修改安装以安装c ++工具,然后vcvarsall.bat就会出现。

答案 10 :(得分:2)

在尝试每个线程上的每个选项之后,我决定深入挖掘源代码以找到解决方案。

修改您的$PythonPath/Lib/distutils/_msvccompiler.py

查找def _find_vcvarsall(plat_spec): 添加为下一行,添加

    PathToVC=r"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
    return PathToVC, r""

然后确保您的visual studio bin目录在您的路径中。

如果这不起作用,您可能需要编辑其他文件,包括:

  • $ PYTHONPATH / LIB /的distutils / msvc9compiler.py
  • $ PYTHONPATH /库/站点包/ setuptools的/ msvc9_support.py

答案 11 :(得分:1)

请注意,有一个非常简单的解决方案。

  1. http://www.microsoft.com/en-us/download/details.aspx?id=44266下载软件并安装。

  2. 找到安装目录,它类似于&#34; C:\ Users \ USER_NAME \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python&#34;

  3. 更改目录名称&#34; C:\ Users \ USER_NAME \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \ 9.0&#34; 至 &#34; C:\ Users \ USER_NAME \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \ VC&#34;

  4. 添加一个新的环境变量&#34; VS90COMNTOOLS&#34;它的值为&#34; C:\ Users \ USER_NAME \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \ VC \ VC&#34;

  5. 现在一切都好。

答案 12 :(得分:1)

如果有人来这里寻找Python 3.5的答案;你需要Visual Studio 2015。

在这里获取Visual Studio 2015社区:https://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx,这对我有用,无需进一步的步骤。

非常感谢Ionel,显然是网上唯一能找到这些信息的地方! http://blog.ionelmc.ro/2014/12/21/compiling-python-extensions-on-windows/

答案 13 :(得分:1)

我在这里尝试了通过命令行设置环境变量的解决方案,但这没有用。我是通过常规命令提示符和Visual Studio Developer命令提示符完成的。

我可以像这样克服这个问题:

  1. 转到环境变量屏幕,在VS100COMNTOOLS中创建一个新变量,让它指向我的Visual Studio安装文件夹C:\ Program Files \ Microsoft Visual Studio 12.0 \ Common7 \ Tools \
  2. 转到上面的文件夹。在这个文件夹里面有文件vsvars32.bat。复制此文件并将其重命名为vsvarsall.bat
  3. 我的配置是Visual Studio 2013(12.0)和Python 3.4.2

答案 14 :(得分:0)

从此处安装Visual Studio Express 2008(9.0):http://go.microsoft.com/?linkid=7729279

这就是为我解决的问题。

答案 15 :(得分:0)

在Windows 10 64位上安装Visual Studio Community 2015 Edition之后。这个错误没有发生。然后我安装Microsoft Visual C++ Compiler for Python 2.7。因为它需要vcvarsall.bat个文件。这个文件在Visual Studio Community 2015中没有,但它在Microsoft Visual C ++ Compiler for Python 2.7中。我还将其路径添加到我的环境变量中,但它也没有用。然后我卸载python 3.4.2并删除了python的所有文件夹,并安装了python 2.7。最后我使用powershell运行pip,然后我可以使用。

安装我所需的软件包,即flask-user
pip install flask-user

答案 16 :(得分:0)

在Windows上有一个令人困惑的边缘情况。如果您按照建议安装2007窗口,但在直接执行python setup.py install时仍然会出现此错误,那么setup.py可能会使用旧版本的设置工具。

特别是,为Windows安装的编译器指向正确位置的窗口的代码位于setuptools库的__init__方法中,这意味着您必须在setup.py中使用setuptools模块。一些较旧的setup.py调用方法直接来自distutils.core。如果是这种情况,那么setup.py将永远不会找到Windows安装的编译器。这可以通过简单地将import setuptools写为setup.py文件的第一行来修复。

Reference: https://bugs.python.org/issue23246:看看steve dower引用的一半:

  

Setuptools有代码来查找编译器包。我们故意把它放在那里,而不是为了确保更多的人能够得到它。   我应该将额外的检查移植到2.7.10中,但立即修复是导入setuptools。

答案 17 :(得分:0)

我也收到了这个错误 错误:需要 Microsoft Visual C++ 10.0(无法找到 vcvarsall.bat)。

我使用 .whl 文件进行安装。

C:\Users\Python\Python34\Scripts>pip install C:\Users\Downloads\Cython-0.28-cp34-cp34m-win_amd64.whl

Cython-0.28-cp34-cp34m-win_amd64.whl 在此平台上不受支持。

在 .whl 文件中将 cp34m 重命名为 none ,然后尝试。

C:\Users\Python\Python34\Scripts>pip install C:\Users\Downloads\Cython-0.28-cp34-none-win_amd64.whl

正在处理 c:\users\downloads\cython-0.28-cp34-none-win_amd64.whl

安装收集到的包:Cython

成功安装 Cython-0.28