【问题标题】:Windows 10 and Unable to find vcvarsall.batWindows 10 和无法找到 vcvarsall.bat
【发布时间】:2016-09-28 18:36:48
【问题描述】:

当我尝试构建一个包时:

C:\Linter\intlib\PYTHON>python setup.py build

我收到此错误消息:

运行构建

运行 build_ext

构建“LinPy”扩展

错误:无法找到 vcvarsall.bat

这是我的 Python 版本:

Win32 上的 Python 3.4.4(v3.4.4:737efcadf5a6,2015 年 12 月 20 日,20:20:57)[MSC v.1600 64 位 (AMD64)]

我正在使用 Windows 10 x64。我知道this 线程和其他几十个线程(例如thisthis 并且不胜枚举)。所以,我想我几乎尝试了一切,但没有任何效果。似乎所有这些线程都已经过时了,所以我需要一些新的收据。顺便提一句。我试过这个:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

还有这个(在 Visual Studio 2015 Visual Studio 命令提示符中):

set DISTUTILS_USE_SDK=1

我在机器上到处寻找vcvarsall.bat,但找不到。

我调查了这个文件夹C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools,但它不包含任何.bat 文件。无论如何,经过我所有的操作python setup.py build 仍然会引发同样的错误。所以,我需要帮助。谢谢!

【问题讨论】:

  • Visual Studio 2015 的环境变量称为%VS140COMNTOOLS%
  • 最简单的officially supported 构建环境是VS 2010 Professional。
  • 我曾经使用 VS 2010 Express 和 Windows SDK v7.1 构建(所有更新都应用了——以正确的顺序),但是构建 x64 版本很痛苦,因为我必须手动编辑项目文件以分离 win32 和 amd64 子项目。使用 SDK 编译器,我必须使用 SetEnv.cmd 来设置 /x86/x64,但不能同时使用。
  • @smerlin。如果您查看我的 Python 版本(... MSC v.1600 ...),您会发现它是使用 VS 2010 构建的。但我不知道这是否重要。
  • @Jacobian,重要的是使用不同版本的 Visual Studio 构建的扩展链接到不同的 C 运行时 DLL,该 DLL 具有自己的堆(用于分配内存)、标准 I/O FILE流和低 I/O 文件描述符。因此,这可能是一个问题。在您的问题中,您提到了“Visual Studio 2015 Visual Studio 命令提示符”(用于 Python 3.5),因此不清楚您是否安装了 Visual Studio 2010,或者安装了哪个版本的 VS2010。

标签: python windows visual-studio-2010 python-3.4


【解决方案1】:

这个问题是因为您没有为您尝试运行的接收构建安装编译器。


根据 MS Python 工程社区,您可能需要以下内容,

Python Version  |You will need
------------------------------------
3.5 and later   |Visual C++ Build Tools 2015 or Visual Studio 2015
3.3 and 3.4     |Windows SDK for Windows 7 and .NET 4.0
                |(Alternatively, Visual Studio 2010 if you have access to it)
2.6 to 3.2      |Microsoft Visual C++ Compiler for Python 2.7

您需要安装:Windows SDK for Windows 7 and .NET 4.0 或 VS 2010


来源:How to deal with the pain of “unable to find vcvarsall.bat”

【讨论】:

  • 不幸的是,它没有帮助。我尝试了一切,但仍然无法正常工作。当我尝试为 Windows 7 安装 Windows SDK 时,它说我需要 .NET 4.0,当我尝试安装 .NET 4.0 时,它说我已经在我的机器上安装了 .NET。当我安装 VS 2010 时,我得到了一些 iso 文件。其中包含许多文件。我不知道该怎么处理这一切。最后的 liunk 也没有用。正如我在问题中已经说过的那样,我在 VS 命令提示符下尝试了这个 commmnd set DISTUTILS_USE_SDK=1,但它没有效果。
  • 所以,很遗憾,我不能接受你的回答。而“无法找到vcvarsall.bat”的问题依然是as*的痛。
  • 这应该会有所帮助:link。之后WinSDK
  • 它没有帮助。当我尝试更改 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Client\Version 时,我收到一条错误消息 - “无法更改版本 ...”。所以,没有任何效果。
  • @ani-menon,在我的 Windows 10 机器上安装 Visual C++ Build Tools 2015(不是 2017)以在 Python 3.6 上构建 Cython 应用程序对我有用。我从landinghub.visualstudio.com/visual-cpp-build-tools 下载了这个包。谢谢。
【解决方案2】:

我搜索了LinPy 的python 轮,不幸的是没有。

Cython 有一个非常好的解决方法,可以为 Python 中的构建设置 Windows C/C++ 编译器。你可以找到它here。由于您已经下载了 SDK/.NET 框架,因此您应该继续安装它,因为它是步骤的一部分。如果您的系统报告已经存在一个版本,您可以卸载、重新启动并重新安装。

另一种方法是在 Visual Studio 安装目录中搜索 vcvars32.batvcvarsall.bat(这些批处理文件仅用于设置编译时的环境变量)。如果您没有找到任何东西,那么您应该安装 SDK。我设法通过在C:\Python34\Lib\distutils\msvc9compiler.pyfind_vcvarsall 函数中硬编码vcvars32.batvcvarsall.bat 的路径来解决问题,但是缺少一个库(ISL - 整数集库)。我认为这是因为我使用的是 VC11。

我没有 SDK,但你可以试试这些,看看会发生什么

【讨论】:

  • LinPy - 是免费的 Linter SQL Server 驱动程序。它可以从这个站点下载 - linter.ru/en。当您安装它时,在 Linter 文件夹之一中,您将看到 PYTHON 文件夹,其中包含 setup.py 文件...至于您的建议,我今天会检查它。谢谢!
  • hacking find_vcvarsall 对我来说是使用 vs_buildtools_2017 的正确方法。 Distutils 应该更好地将 msvc9compiler.py 真正演变为现代版本。
【解决方案3】:

您可以通过安装 mingwpy 或 libpython(不能同时安装两者)来减轻您使用适用于 Python 3.4 的 Microsoft 编译器的痛苦:

pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy

conda install libpython

【讨论】:

  • 谢谢!但是你能提供一些例子来说明如何使用mingwpylibpython 来构建一些需要vcvarsall.bat 的库吗?让它成为一些虚构的图书馆foobar
  • 来自 anaconda 的 Libpython 使用 mingw 自动构建您的扩展,无需任何预配置。请注意,如果您的构建脚本 setup.py 正在使用 distutils,那么导入 setuptools 将出于充分的理由对 distutils 进行修补。
  • 我没有使用 mingwpy,但据说在 winpython 发行版中它可以开箱即用,就像 anaconda 中的 libpython。
  • 不幸的是,它不起作用。我刚刚安装了mingwpy。结果我在控制台中看到了这个:Installing collected packages: mingwpy Successfully installed mingwpy-0.1.0b3。但是,当我在安装后立即运行python setup.py build 时,我仍然会收到相同的错误消息error: Unable to find vcvarsall.bat
  • 看来这个问题在 Windows 10 和 Python 3.4 上是完全牢不可破的。
【解决方案4】:

第 1 步:从以下位置安装 Visual C++ 2010 Express here

(不要安装 Microsoft Visual Studio 2010 Service Pack 1)

第 2 步:从控制面板\程序和功能中删除所有 Microsoft Visual C++ 2010 Redistributable 软件包。如果您不这样做,那么安装将失败并出现一个模糊的“安装期间出现致命错误”错误。

第 3 步:从here 安装 Windows SDK for Visual Studio 2010 (v7.1) 的离线版本。 这是 64 位扩展所必需的。 Windows 为 Pismo 等 ISO 提供了内置安装。

第 4 步:您需要使用 Pismo File Mount Audit Package 安装 ISO 文件。从here 下载 Pismo

第 5 步:右键单击下载的 ISO 文件并选择使用 Pismo 安装。此后,安装 Setup\SDKSetup.exe 而不是 setup.exe。

步骤 6a:在 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 中创建一个 vcvars64.bat 文件,方法是将目录更改为 C:\Program Files (x86)\Microsoft Visual Studio version\ VC\ 在命令提示符下。 在命令提示符下键入命令: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

步骤 6b: 要为针对 x86 平台的 64 位命令行构建配置此命令提示符窗口,请在命令提示符处输入: vcvarsall x86</p>

【讨论】:

    【解决方案5】:

    使用最新的 SDK 和构建工具更新 Python 3.9.X 解决方案:

    第 1 步:安装并运行 VS 2019 https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019 的构建工具

    第 2 步:从各个组件部分选择 Windows 10 SK (10.0.20348.0+) 和 MSVC v142 - VS 2019 C++ x64/x86 构建工具 (v14.29-16.10+),然后单击 安装

    第 3 步:继续使用 vcvarsall.bat 构建您的 Python 应用程序。

    注意:vcvarsall.bat 可以在 C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build 中找到

    【讨论】:

      【解决方案6】:

      要使用 mingwpy 而不是 MSVC 编译器,请在文件夹 %USERPROFILE% 中创建一个名为 pydistutils.cfg 的文件,其内容如下:

      [config]
      compiler=mingw32
      [build]
      compiler=mingw32
      [build_ext]
      compiler=mingw32
      

      另见How to use MinGW's gcc compiler when installing Python package using Pip?

      【讨论】:

        【解决方案7】:

        为了补充 Ani Menon 的回答并解决他回应的 Jacobian's(OP) 问题......我遇到了同样的问题,所以我关注了这篇关于临时更改注册表中 .NET 版本号的 StackOverflow 帖子。之后更改注册表值可能是个好主意。

        https://stackoverflow.com/a/33260090/4637870

        这成功地让我克服了 .NET 4 not installed 错误,但随后又出现了另一个错误,表明安装不成功。

        我不得不删除 Microsoft Visual C++ 2010 Redistributable 的 x86 和 x64 实例,并让 SDK 为我安装它。这样做之后,我能够毫无错误地完成设置。这是我从中获取信息的地方:

        论坛:https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/381299c9-1bf4-44d4-989c-871735c6b4ca/windows-sdk-for-windows-7-and-net-framework-4-wont-install?forum=windowssdk

        修复:https://support.microsoft.com/de-de/help/2717426/windows-sdk-fails-to-install-with-return-code-5100

        我尝试在同一个包上运行 pip 并且 error: Unable to find vcvarsall.bat 消失了。 现在我有一个ValueError: ['path'],但那是另一个问题。希望这些信息对您有所帮助。

        有关我运行 Windows 7 和 python 3.4 的设置的信息

        【讨论】:

          猜你喜欢
          • 2011-02-18
          • 2013-07-13
          • 1970-01-01
          • 1970-01-01
          • 2017-01-25
          • 2011-01-17
          相关资源
          最近更新 更多