win10下unable to find vcvarsall.bat错误问题解决案例

在Win10系统中,使用Python编译C扩展模块时遇到`unable to find vcvarsall.bat`错误。通过安装VS2017,调整安装选项,修改环境变量,重装不同版本的Python,最终发现是Python的_msvccompiler.py模块中的_find_vc2017函数找到vcvarsall.bat路径。问题解决,但编译过程的详细步骤仍有待深入研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@[TOC]目录

第一次发帖。。。

问题场景

在python中使用C的库编译一个模块mydemo,使用python setup.py install编译安装时失败,实际上是在编译阶段失败,提示:Unable to find vcvarsall.bat

初始python版本(解决问题的过程中更换版本了)
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]

问题解决过程

1)第一次安装VS2017

根据编译过程,中间一定要使用C的编译器,我没有安装,因此按照网上搜索的解决方案,下载了VS2017(社区版本)。
结果发现搜索不到需要的这个文件。
然后又是一顿搜索,发现可能是安装选项选择错误导致的,第一次安装看到这个python开发,以为是把python开发相关的资源都在里面,后来发现这里是安装python相关的东西。需要选上C++相关的部分。
安装界面

2)第二次安装VS2017

再次安装VS2017,将“使用C++的桌面开发”选择上,去掉一些明显用不上的减少空间:
在这里插入图片描述
然后确实能够找到了,这个文件在这个目录下:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build
在这里插入图片描述
但是执行命令python setup.py install发现提示还是一样的“unable to find vcvarsall.bat”。

3)调整路径

这次可能是搜索到的路径不正确的问题了。
按照搜索到的解决方案中提到的,build过程中,需要使用到msvc9compiler.py来找这个vcvarsall.bat。(这一步至今还没搞清楚是否是这样的,从后面结果来看应该还有其他途径)

msvc9compiler.py中的find_vcvarsall()处理逻辑:

def find_vcvarsall(version):
    """Find the vcvarsall.bat file

    At first it tries to find the productdir of VS 2008 in the registry. If
    that fails it falls back to the VS90COMNTOOLS env var.
    """
    vsbase = VS_BASE % version
    try:
        productdir = Reg.get_value(r"%s\Setup\VC" % vsbase
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值