使用Cython编译Python代码时报错无法找到vcvarsall.bat该如何解决
解决Cython编译时找不到vcvarsall.bat报错
报错原因
你安装的Microsoft Visual C++ 2012、2013、2015-2019都属于运行时库,仅支持运行用对应版本VC编译的程序,没有包含C/C++编译所需的工具链、头文件和vcvarsall.bat环境配置脚本,因此编译Cython扩展时会触发报错。从你提供的Python配置来看你使用的是64位Python 3.10,对应支持VS2017及以上版本的MSVC工具集。
解决方案
方案1:安装官方MSVC生成工具(最稳定,推荐)
- 下载微软Visual Studio生成工具(无需安装完整IDE),安装时勾选「使用C++的桌面开发」工作负载,默认会安装匹配当前系统的MSVC工具集、Windows SDK以及
vcvarsall.bat相关文件,安装完成后重启命令行重新执行编译命令即可:python setup.py build_ext --inplace
方案2:手动调用已有的vcvarsall.bat
如果已经安装过对应版本的Visual Studio,可手动执行脚本配置环境后再编译:
- 找到对应版本VS安装路径下的vcvarsall.bat,VS2019/2022的默认路径示例:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat - 在命令行执行对应命令配置环境,64位系统执行:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
32位系统执行:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86 - 配置完成后在同一命令行窗口执行编译命令即可。
方案3:使用MinGW-w64替代MSVC编译
不想安装MSVC工具链可使用MinGW作为替代编译器:
- 安装MinGW-w64,将其bin目录添加到系统环境变量PATH中,重启命令行使配置生效
- 进入Python安装目录下的
Lib\distutils文件夹,新建名为distutils.cfg的文件,写入以下内容:
[build]
compiler=mingw32[build_ext]
compiler=mingw32
- 保存文件后重新执行编译命令即可。
内容的提问来源于stack exchange,提问作者Shalva
相关产品推荐
相关产品推荐

