Windows 10无法找到vcvarsall.bat

14
当我尝试构建一个软件包时:

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

我收到了以下错误信息:
运行构建 运行构建_ext 正在构建“LinPy”扩展 错误:无法找到vcvarsall.bat
这是我的Python版本:
Python 3.4.4(v3.4.4:737efcadf5a6,2015年12月20日,20:20:57)[MSC v.1600 64位(AMD64)]在win32上
我正在使用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% - smerlin
最简单且官方支持的构建环境是VS 2010专业版。 - Eryk Sun
我过去使用的是VS 2010 Express和Windows SDK v7.1(所有更新都已应用--按正确顺序),但构建x64版本很麻烦,因为我必须手动编辑项目文件以分离win32和amd64子项目。使用SDK编译器时,我必须使用SetEnv.cmd设置/x86/x64,但无法同时设置两者。 - Eryk Sun
@smerlin。如果您查看我的Python版本(... MSC v.1600 ...),您会发现它是使用VS 2010构建的。但我不知道这是否重要。 - Jacobian
@Jacobian,这很重要,因为使用不同版本的Visual Studio构建的扩展链接到具有其自己堆(用于分配内存)、标准I/O FILE流和低级I/O文件描述符的不同C运行时DLL。因此,这可能是一个问题。在你的问题中,你提到了“Visual Studio 2015 Visual Studio Command Prompt”(用于Python 3.5),因此并不清楚你是否安装了Visual Studio 2010,或者安装了哪个版本的VS2010。 - Eryk Sun
@eryksun。抱歉如果有误导之嫌。但让我再次指出,我没有安装Visual Studio 2010。当我说我正在使用Visual Studio 2015时,我的意思是它已经安装在我的计算机上了。然而,看起来Python是以某种方式与VS 2010一起构建的。 - Jacobian
7个回答

22

问题是由于您尝试运行的可接受构建中没有安装编译器所致。


以下是根据MS Python Engineering社区可能需要的内容:

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 7和.NET 4.0的Windows SDK或VS 2010


来源: 如何应对“无法找到vcvarsall.bat”的痛苦


很遗憾,它没有帮助。我尝试了一切,但仍然无法解决问题。当我尝试安装Windows 7的Windows SDK时,它说我需要.NET 4.0,但是当我尝试安装.NET 4.0时,它又说我已经在我的计算机上安装了.NET。当我安装VS 2010时,我得到了一些包含众多文件的iso文件。我不知道该怎么做。最后一个链接也没用。正如我在问题中所说,我在VS命令提示符中尝试了这个命令set DISTUTILS_USE_SDK=1,但它没有效果。 - Jacobian
2
很遗憾,我不能接受你的答案。而且“无法找到vcvarsall.bat”的问题仍然让人头疼。 - Jacobian
1
这个链接应该会有帮助:link。之后可以下载 WinSDK - Ani Menon
2
@ani-menon,我在我的Windows 10机器上安装了Visual C++ Build Tools 2015(而不是2017),以便在Python 3.6上构建Cython应用程序。我从http://landinghub.visualstudio.com/visual-cpp-build-tools下载了该软件包。谢谢。 - vlmercado
我可以确认这在Python 3.8上不起作用,只能在3.6上运行。 - greendino
显示剩余6条评论

4
我搜索了一下LinPy的Python wheel,但很遗憾没有找到。对于在Python中编译构建,Cython有一种非常好的解决方法,可以设置Windows C/C++编译器,你可以在这里找到:here。由于您已经下载了SDK/.NET框架,因此请继续安装它,因为它将作为步骤的一部分需要使用。如果您的系统报告已经存在一个版本,则可以卸载、重新启动并重新安装。

另一种方法是在Visual Studio安装目录中搜索vcvars32.batvcvarsall.bat(这些批处理文件仅用于设置编译时环境变量)。如果找不到,则应安装SDK。我通过在C:\Python34\Lib\distutils\msvc9compiler.pyfind_vcvarsall函数中硬编码路径到vcvars32.batvcvarsall.bat的方式进行了一次hackish工作,但缺少库(ISL-整数集合库)。我认为这是因为我正在使用VC11。

enter image description here

我没有SDK,但您可以尝试这些方法,并查看在您的端上会发生什么。


LinPy - 是一个用于免费 Linter SQL Server 的驱动程序。它可以从此网站下载 - https://linter.ru/en/。当您安装它时,您会在 Linter 文件夹中看到 PYTHON 文件夹,其中包含 setup.py 文件... 至于您的建议,我将今天进行检查。谢谢! - Jacobian
当我使用vs_buildtools_2017时,黑客find_vcvarsall是正确的方法。Distutils最好真正将msvc9compiler.py发展成现代化的工具。 - caoanan

3
您可以通过安装mingwpy或libpython(不要同时安装两者)来使用Microsoft编译器轻松处理Python 3.4的问题: pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy conda install libpython

我没有使用mingwpy,但据说在winpython发行版中它可以直接使用,就像anaconda中的libpython一样。 - denfromufa
库不应直接依赖于vcvarsall.bat - 它是编译器设置脚本。 - denfromufa
should be the same - denfromufa
1
不幸的是,它无法工作。我刚刚安装了 mingwpy。结果在控制台中看到了这个:Installing collected packages: mingwpy Successfully installed mingwpy-0.1.0b3。然而,当我在安装后立即运行 python setup.py build 时,仍然会收到完全相同的错误消息 error: Unable to find vcvarsall.bat - Jacobian
1
所以,看起来在Windows 10上使用Python 3.4手头完全无法解决这个问题。 - Jacobian
显示剩余3条评论

1

步骤1:从这里安装Visual C++ 2010 Express。

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

步骤2:从控制面板\程序和功能中删除所有Microsoft Visual C++ 2010可再发行包。如果不这样做,安装将因“安装期间致命错误”而失败。

步骤3:从这里安装Visual Studio 2010 (v7.1)的离线版本的Windows SDK。这对于64位扩展是必需的。Windows内置了像Pismo这样的ISO挂载。

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

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

第六步a:通过在命令提示符上更改目录到C:\Program Files (x86)\Microsoft Visual Studio version\VC\,在C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64中创建一个vcvars64.bat文件。 在命令提示符上输入以下命令: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

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


1

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

步骤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 中找到。


0
补充一下Ani Menon的回答并解决Jacobian(OP)在回复中遇到的问题...我也遇到了同样的问题,所以我按照这个StackOverflow帖子的方法暂时更改了注册表中.NET的版本号。更改完后最好将注册表值改回来。

https://dev59.com/NlwZ5IYBdhLWcg3wb_-Y#33260090

这样做成功地让我克服了.NET 4未安装的错误,但是随后出现了另一个错误,提示安装不成功。

我不得不删除Microsoft Visual C++ 2010可再发行组件的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。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接