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

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

cannot find vcvarsall.bat 

所以,我安装了visual c ++ 2010.仍然没有find这个文件 – 不过,它在那里。 我的猜测(一个非常没有教养的…)是在某个地方的path是错误的,因为我也有一个旧的视觉2008年(漂亮的空白)文件夹。 我不知道在哪里做新的path的变化。 我是否在registry或脚本中更改了某些内容? 或者别的地方?

看来,Python正在明确地寻找Visual Studio 2008.我遇到了这个问题,即使它在path上,也找不到vcvarsall.bat。

事实certificate,Visual Studio 2010创build了以下环境variables:

 SET VS100COMNTOOLS=C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\ 

解决方法是创build一个名为VS90COMNTOOLS的variables,并指向Visual Studio 2010常用工具文件夹,例如

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

这对我来说是固定的,我现在可以使用Visual Studio 2010编译器来构build包。

您还可以使用以下命令将VS90环境variables设置为指向VS100环境variables:

 SET VS90COMNTOOLS=%VS100COMNTOOLS% 

这是一个简单的解决scheme 。 我正在使用Python 2.7和Windows 7。

你要安装的东西需要一个C / C ++编译器,但是Python没有find它。 很多Python包实际上是用C / C ++编写的,需要编译。 编译C ++需要vcvarsall.bat,而pip假设你的机器可以做到这一点。

  1. 首先尝试升级setuptools,因为v6.0及更高版本会自动检测编译器。 你可能已经有了一个编译器,但是Python找不到它。 打开命令行并input:

    pip install --upgrade setuptools

  2. 现在尝试再次安装你的软件包:

    pip install [yourpackagename]

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

  4. 现在再试一次:

    pip install [yourpackagename]

你去了。 它应该为你工作。

解决此问题的方法是设置以下环境variables:

 VS90COMNTOOLS 

例如:

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

此错误可能是由于在安装Visual Studios之后不重新启动,或者在安装之后未启动新的命令提示符所致。

另外,你可以用来编译扩展的Visual Studios版本可能取决于你正在构build的Python版本。

2015年 ,如果你仍然得到这个令人困惑的错误, 指责 PIP使用的python默认setuptools

  1. http://www.microsoft.com/en-in/download/details.aspx?id=44266下载并安装编译python 2.7模块所需的最小Microsoft Visual C ++编译器for Python 2.7
  2. 更新你的setuptools – pip install -U setuptools
  3. 安装需要C编译的任何python包。 pip install blahblah

它会正常工作。

更新 :它将无法正常工作的所有图书馆。 我仍然遇到一些需要lib头文件的错误。 他们唯一能够完美工作的就是Linux平台

这工作对我来说(python2.6):

http://www.microsoft.com/visualstudio/en-us/products/2008-editions/express安装free ms visual studio 2008

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

安装程序已经设置了这个环境variables:

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

这个神秘的错误意味着你没有安装C编译器。 有一个讨论提出了更多的解释性错误 ( 这里继续 ,注册和评论,如果你关心它!),但目前还没有实施。

要解决这个问题,你可以安装Visual Studio 2008 SDK,这将需要大约一个GB,或者你可以安装非常小的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 ... 

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

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

有关在IPython中使用%% cython魔术的更多信息和解决方法: 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

看起来MS已经发布了这里所需的确切软件包。 BurnBit 在这里 。 安装它,然后将此答案中的registry项设置为指向C:\Users\username\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

安装Visual C ++是一个好的第一步,但我无法确定 2010版是否能正常工作。 无论如何,试试看吧。

在Visual C ++安装目录中查找vcvarsall.bat (对于Visual Studio 2010,它位于ProgramFiles\Microsoft Visual Studio 10.0\VC )。 然后将该目录添加到系统path。 如果你在命令行上这样做,你可以尝试:

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

然后再次尝试运行你试图运行的任何东西。

为了获得更长久的效果, 请将其添加到计算机系统path设置中 。

如果你已经通过快速安装安装了Visual Studio 2015,那么vcvarsall.bat就不存在了。 但是,你可以去程序和function,并修改安装,以安装C ++工具,然后vcvarsall.bat将出席。

这是对于Windows用户的答案 – 非常简单的解决scheme。

正如其他人所指出的那样,问题是python / cython等试图find它们的编译器,但是这个编译器并不存在于计算机上。 大多数情况下,这个编译器是visual studio(2008,2010或2013)的一个版本,但是没有安装这样的编译器,或者安装了更新的版本,并且系统阻止安装更旧的版本。 所以,解决scheme很简单:

1)看看C:\ Program Files文件(x86),看看是否有安装的Microsoft Visual Studio版本,如果它比Python的版本更新。 如果没有,安装(/更新)Python的版本(请参阅前面的答案),甚至是最新版本,然后执行下一步。

2)如果已经安装了最新版本的Microsoft Visual Studio,我们必须让Python / Cython等认为它是它的版本。 这非常简单:转到系统环境variables并创build以下variables(如果它们不存在):

VS100COMNTOOLS

VS110COMNTOOLS

VS120COMNTOOLS

VS140COMNTOOLS

并设置这些variables的字段

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

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

3)将path“C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC”添加到%PATH%环境variables(根据您的版本更改Visual Studio版本号)。

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

就这样。

我试着在这里通过命令行设置一个环境variables的解决scheme,但是这不起作用。 我通过常规的命令提示符和Visual Studio Developer命令提示符执行了这个操作。

我可以像这样解决这个问题:

  1. 进入环境variables屏幕,并创build一个新的variablesVS100COMNTOOLS,并让它指向我的Visual Studio安装文件夹C:\ Program Files \ Microsoft Visual Studio 12.0 \ Common7 \ Tools \
  2. 转到上面的文件夹。 在这个文件夹里面有文件vsvars32.bat。 复制此文件并将其重命名为vsvarsall.bat

我的configuration是Visual Studio 2013(12.0)和Python 3.4.2

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

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

  2. find安装目录,就像是“C:\ Users \ USER_NAME \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python”

  3. 将目录名称“C:\ Users \ USER_NAME \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \ 9.0”更改为“C:\ Users \ USER_NAME \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++对于Python \ VC“

  4. 添加一个新的环境variables“VS90COMNTOOLS”,它的值是“C:\ Users \ USER_NAME \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \ VC \ VC”

现在一切正常。

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

获取Visual Studio 2015社区: https : //www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx ,这工作对我来说没有进一步的步骤需要。

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

在尝试了每个线程的每个选项之后,我决定挖掘源代码以find解决scheme。

编辑你的$PythonPath/Lib/distutils/_msvccompiler.py

finddef _find_vcvarsall(plat_spec):添加为下一行,添加

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

然后确保你的visual studio bin目录在你的path中。

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

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

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

这是为我修复的。

在Windows 10 64位上安装Visual Studio Community 2015 Edition之后。 这个错误没有去。 然后,我安装Microsoft Visual C ++编译器for Python 2.7 。 因为它需要vcvarsall.bat文件。 这个文件没有在Visual Studio Community 2015中的任何地方,但它是在Microsoft Visual C ++编译器for Python 2.7中。 我也将其path添加到我的环境variables,但它也没有工作。 然后我卸载python 3.4.2并删除了python的所有文件夹,并安装了python 2.7。 最后,我使用powershell运行pip,通过使用,我能够安装我需要的软件包,例如flask-user。

 pip install flask-user 

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

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

参考:https ://bugs.python.org/issue23246:从steve dower的报价中查找一下:

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