在安装Python包的时候报错:error: Unable to find vcvarsall.bat的解决办法

对于解决python安装第三方包时候,报错 error: Unable to find vcvarsall.bat的终极秘诀 终极解决error: Unable to find vcvarsall.bat。对比各种方法。 阅读详情

在使用openpose这个人体姿态检测程序过程中,用到了一个C++包,但是在windows系统下需要利用swig组件编译一下才可以使用,但是windows下比较坑的一点就是编译工具不完善,在使用swig的过程中老是报错:error: Unable to find vcvarsall.bat,费了好大劲终于折腾好了,同时了解了一下Windows下的Python包编译原理,记录一下。

一、vcvarsall.bat是什么, 为什么需要这个组件?

Python最大的优点就是通过各种包扩展其本身的功能。有了这些功能强大包的加持,Python无往不利,能够编程一切,比如图像处理中的 Pillow包, 高性能机器学习包scikit-learn、或用于微线程处理的greenlet包。但是,这些包时怎么能做Python语言本身做不到的事情呢?

答案是它们调用了计算机底层内核,包括了一些非Python语言的扩展模块。与Python模块不同,它们不是.py文件,它们是.pyd文件。在这个文件中,函数的调用是用Python写的,但是涉及到计算机的底层实现以及需要实现高性能的部分通常用C语言编写

当我们安装Python包的时候出现找不到vcvarsall.bat时,这说明你正在安装一个包含扩展模块但只有源代码的包。“vcvarsall.bat”是Visual Studio编译器的一部分,这是编译C模块从而为Python所用的必要组件。

那么有读者可能会问:在安装之前编译好不就得了吗,非要用户自己现在编译器编译吗?

我们平常下载的Windows程序之所以不需要自己下载编译器编译,而是直接傻瓜式地点击下一步就能安装好,是因为操作系统提供了兼容性处理。但是,Python运行的环境非常复杂,有些时候并不是专门为Windows系统开大的,每台机器情况都不一样,导致编译的包完全不兼容。

所以开发者只能发布源代码,用户在自己的机器上用适合自己机器的编译器工具对源码进行编译,

但是对于windows系统来说,大多数人装系统的时候并没有装相应的编译环境,(比如说 Visual Studio),而且Windows环境下这些编译器还因为版本不匹配,使用盗版系统等原因很难装。

当然,对于Windows系统来说,这种情况也有聪明的程序员提出了相应的解决方案。对于视窗平台,软件包开发者可以上传.whl格式的安装包以及源代码。.whl文件本质上就是zip或者rar格式文件,只不过他更加方便python的安装以及使用。而且包含的扩展模块已经编译好了,所以只要下载对应系统和版本的```.whl``文件,无需编译器即可安装。

二、如果遇到没有.whl文件的包怎么办

在http://pythonwheels.com/这个网站里,对最受欢迎的360多个Python包,都提供了不同Windows版本下封装的.whl文件。但是,Python包实在是太多了,有时你会遇到一个封装的.whl文件。下边就是解决方案:

首先,如果不急的话就等等,一般这种情况是这个包刚被开发出来,只在Linux下发布,Windows下正在测试。

当然,如果这个包本来就没有打算发布Windows版本,那么你需要自己编译一下。

编译之前需要安装编译器工具包。按照对应的Python版本下载对应的工具包,下表列出了编译2.6版本之后的Python包所需的工具以及部分下载链接。其中可以下载对应的VS,也可以直接下载工具集,对于非C++开发者来说,第二种方式非常友好,免去了安装很多不要组件和C++编译环境的问题。

Python版本对应的VS对应的工具包
3.5及更高 Visual Studio 2017Visual C++ Build Tools 2015
3.3 或 3.4Visual Studio 2010Windows SDK for Windows 7 and .NET 4.0
2.6 到 3.2无Microsoft Visual C++ Compiler for Python 2.7

下载好之后,进去安装页面,按照提示安装即可。最后,按照下边这个链接编译就好

参考链接:

Windows下Python快速解决error: Unable to find vcvarsall.bat 系统配置:Windows10 x64, Visual Studio 2017, Python2.7.1 报错信息:error: Unable to find vcvarsall.bat 报错原因:在生成的时候,编译器从%PythonInstallPath%\distutils\msvc9compiler.py里的219行find_vcvarsall(version)函数中找不到vcvarsal 阅读详情

相关推荐

unable to find vcvarsall.bat

unable to find vcvarsall.bat 系统配置:Windows10 x64, Visual Studio 2017, Python3.6.4(Miniconda下) 报错信息:error: Unable to find vcvarsall.bat 解决方法:参照这篇博客https://blogs.msdn.microsoft.com/pythonengineering/2...

大碩91的博客 2046

error: Unable to find vcvarsall.bat 问题

使用python36执行python的setup生成扩展模块的时候遇到上述问题,原因是没有找到vcvarsall.bat。查找vcvarsall.bat的方法是定义在_msvccompiler.py文件中的(注意该文件前面是有下划线的!),比如我本地(conda虚拟环境)的文件路径为"D:\ProgramData\Anaconda3\envs\xxxx\Lib\distutils\_msvccom...

zhang1034490826的专栏 1622

python setup.py install 的时候 报Unable to find vcvarsall.bat的解决方案

python版本2.7.12因为需要安装一个 pycrypto-2.7a1 下载的包为tar.gz解压后 用CMD到达目录 执行python setup.py install发现报错 error: Unable to find vcvarsall.batC:\Users\VEADoc\Desktop\pycrypto-2.7a1> python setup.py install running i

oMelody的博客 2029

彻底解决 error: Unable to find vcvarsall.bat

1.windows上做Python开发,搭环境还真不比Linux容易。error: Unable to find vcvarsall.bat这个错误眼熟吧? 凡是安装和操作系统底层密切相关的Python扩展,几乎都会遇到这个错误。比如PIL, Pillow(两个图形库),greenlet以及其基础之上的eventlet, gevent微线程并发库等等。当然了有一些情况下,你不必彻底解决它,你可以

secretx的专栏 14万+

error: Unable to find vcvarsall.bat

【win10 x64 python 3.6.5 安装traits报错解决办法】 报错: building 'traits.ctraits' extension error: Unable to find vcvarsall.bat ---------------------------------------- Failed building wheel for traits...

Hello Word! 1061

解决error: Unable to find vcvarsall.bat

解决 error: Unable to find vcvarsall.bat 配置文件。 安装vs后,根据vs版本修改VS90COMNTOOLS对应的数字(我安装的是vs2013),安装了vs2013,测试不同的机子上使用配置文件解决问题

Mask-RCNN:error: Unable to find vcvarsall.bat

文章目录✨必看1. 背景介绍2. 错误分析2.1 错误原因2.2 vcvarsall.bat是什么?2.3 vcvarsall.bat在哪?3. 解决3.1 方法1:改注册表3.2 方法2:改_msvccompiler.py代码 ✨必看 用此方法解决错误的前提条件: 电脑上必须安装有Visual Studio 2019 或者安装了Visual Studio 其他版本(参考)。 Python版本: 虚拟环境Python 3.6 系统: Win 10 Anaconda版本:conda 4.8.5 1. 背

WaitFoF 1759

vcvarsall.bat

python 报错 说依赖的文件 error: Unable to find vcvarsall.bat ,压缩包中包含适合多种系统的vcvarsall.bat,可以用这个文件尝试解决问题。

python执行安装第三方依赖失败:error: Unable to find vcvarsall.bat

当导入第三方库时没执行setup失败,报错error: Unable to find vcvarsall.bat, 网上对这个错误大部分都说安装vs,但有人安装完后依旧报错,其实不一的是么有安装,而是安装了找不到vcvarsall.bat所在的路径。 解决办法,首先确定是否真的没有vcvarsall.bat,查看电脑是否有Visual Studio,或者 Microsoft Visual C+...

leaves_story的博客 6668

verilog学习——Verilog的行为建模/Behavioral modeling(2)

函数的用途是返回要在表达式中使用的值。函数定义始终以关键字function开始,后跟返回类型、名称和在参数中的端口列表。函数以关键字endfunction结束。函数至少有一个输入,如果不返回任何内容,则返回类型为void。由两种方法可以声明函数的输入;函数定义隐式地创建一个与函数同名的内部变量。通过将函数结果分配给内部变量来初始化返回值。函数调用是带有表达式的操作数。① 函数不能包含任何时间控制语句,如#、@、wait、posedge、negedge;

LXY241638的博客 1361

T12 电烙铁简单程序逻辑

通过分析就可以知道,发热丝本身即是发热体,也是热偶的工作端。怎么可能是热电动势呢,确实,但不要忘了T12-OUTPUT端的电压是PWM波,理论上是有单片机PWM电压为0 v时的,而T12-OUTPUT端的电压此时也应为0。在T12烙铁头中,PID控制算法通过监测温度传感器的输出,计算当前温度与设定温度之间的差异,并根据这一差异调节加热功率,以实现烙铁头温度的精确控制。这段代码实现了一个简单的增量式PID控制器,通过计算当前温度与期望温度之间的差异以及历史偏差值,调节输出控制量,实现对温度的精确控制。

hgkhjkljnl的博客 1万+

Python3安装C扩展 或报错error: Unable to find vcvarsall.bat

一开始的安装步骤我是参照这个博客的 https://blog.csdn.net/little_tan/article/details/53457011 不过不同的是,我使用的是VS2017,因此此篇博客中的这一步需要改变一下改变的部分主要就是VS_2012改成2017,钱前面的两个,Common7\IDE和...\Tools不用改变,后面看的VC\bin改为VC\Tools\MSVC\14.1...

ever_evil的博客 2366

淘宝抓包,直达函数内部request请求体和response响应体, 告别FD, Charles,SSL,justtrustme 等http代理,证书工具。

淘宝抓包,hook发包函数,直接获取response相应数据

binary66的博客 4470

error: Unable to find vcvarsall.bat解决办法

我在windows上安装impyla的时候报错然后上网搜了一些资料,有说直接安装whl文件的(失败),有说安装vs的(太大了),有说安装单独的开发工具集(vc++),下面我采用的就是安装vc++,它的下载网址和说明如下:https://blogs.msdn.microsoft.com/vcblog/2015/11/02/announcing-visual-c-build-tools-2015-st...

a6822342的博客 4万+

开关变换器小信号建模实战:从理论到环路设计

本文深入探讨了开关变换器小信号建模的实战技巧,从理论基础到环路设计全面解析。通过Buck和Boost变换器的具体案例,详细介绍了状态空间平均法、扰动法等关键建模技术,并分享环路补偿设计和实际调试中的宝贵经验。文章特别强调了小信号建模在电源设计中的重要性,为工程师提供了从理论到实践的完整解决方案。

weixin_29290259的博客 376

从球谐函数到哈希编码:Instant-NGP如何重构NeRF的数学基础

本文深入解析了Instant-NGP如何通过多分辨率哈希编码重构NeRF的数学基础,显著提升训练速度和渲染效率。对比传统球谐函数,哈希编码在计算复杂度、频率适应性和内存访问效率上具有明显优势,为实时神经渲染技术开辟了新方向。

weixin_29240711的博客 419

python27安装pycrypto报 unable to find vcvarsall.bat错误解决办法

在安装RF第三方库SSHLibrary时,需要依赖pycrypto,因为我没有使用pip,是手动下载安装的,所以需要手动安装pycrypto,我是安装的pycrypto2.2版本。安装过程中,报如下错误: error: Unable to find vcvarsall.bat 问题很直观,没有找到vcvarsall.bat,需要安装VS C++ 。 直接上解决办法: 1.根据下面链接中提供的下载...

空城雀的博客 1615

瑞萨RZN2L工业以太网开发避坑指南:EtherCAT从入门到通信调试全流程

本文详细解析了瑞萨RZN2L MPU在工业以太网开发中的EtherCAT从站配置与通信优化全流程。通过硬件设计关键点、协议栈选型、PDO映射策略及DC同步精度优化等实战技巧,帮助开发者快速搭建高效通信框架并解决调试中的常见问题,特别适合工业自动化领域的实时通信需求。

aitie1479的博客 461

python 安装-ERROR---Unable to find vcvarsall.bat

系统配置:Windows10 x64, Visual Studio 2017, Python2.7.1 报错信息:error: Unable to find vcvarsall.bat 报错原因:在生成的时候,编译器从%PythonInstallPath%\distutils\msvc9compiler.py里的219行find_vcvarsall(version)函数中找不到vcvar...

dengjiyu8406的博客 956

【无人机编队】基于matlab虚拟leader无人机编队仿真【含Matlab源码 3279期】

虚拟leader无人机编队仿真 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 837

学Simulink--基础光伏储能场景实例:基于Simulink的光储微电网主从控制策略仿真

摘要:本文详细介绍基于Simulink的光储微电网主从控制策略仿真方法。通过"储能V/f控制+光伏PQ控制"架构,实现孤岛运行时电压频率稳定和功率平衡。文章包含系统建模步骤、核心控制算法实现(附MATLAB代码)、三种典型工况仿真测试(稳态、光伏突变、负荷波动),结果显示系统满足电压偏差<±2.5%、频率偏差<±0.3%、动态响应<1s的性能要求。最后提出双主冗余、分层控制等优化方向,为光储微电网控制提供完整仿真解决方案。

amy_mhd的博客 74

python执行报错 error: Unable to find vcvarsall.bat

(1)先查询需要的版本 ①查看 MSC 版本 打开cmd窗口,输入命令:python Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32 MSC v.1916 ,当前是1916 ②获取主版本号 “MSC V.”后面那个数字1500就是编译当...

sz80443374的博客 617

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

windows下,安装python扩展时报错:unable to find vcvarsall.bat

我在win10环境下安装一个python扩展时,报错如下:   错误原因: %PythonInstallPath%\Lib\distutils\msvc9compiler.py 这个文件是Python用来处理与VC编译器有关的操作的。 其中该文件里的219行find_vcvarsall(version)函数中找不到vcvarsall.bat文件(报错信息就是这里出现的):说明pytho...

the blog of alunSemiconductor 757

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 亲测可用的一种加速下载github项目的方法
下一篇: 入门Pandas数据分析,这篇文章就够了
东写西读李老湿
东写西读李老湿 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄13年 481粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值