You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch编译CUDA扩展时subprocess调用where cl返回非零退出状态错误

报错根因

subprocess.CalledProcessError: Command '['where', 'cl']' returned non-zero exit status 1 本质是PyTorch编译C++/CUDA扩展时,调用Windows系统命令查找MSVC编译器cl.exe失败,系统找不到该程序因此返回非0错误码。

解决方案
  • 先确认依赖版本匹配:你使用的PyTorch版本、CUDA版本、Visual Studio版本三者必须兼容。比如CUDA 10.x最高支持Visual Studio 2017,CUDA 11.x及以上支持Visual Studio 2019/2022,版本不匹配会导致后续编译即使找到cl.exe也报错。
  1. 安装MSVC编译工具
    打开Visual Studio Installer,勾选使用C++的桌面开发工作负载,确认安装MSVC构建工具、对应版本的Windows SDK组件,完成安装后再进行后续操作。
  2. 临时激活编译环境(推荐,无环境变量冲突)
    不要直接在普通CMD/PowerShell中运行代码,打开对应Visual Studio版本的64位原生工具命令行:
    • VS2022对应「x64 Native Tools Command Prompt for VS 2022」
    • VS2019对应「x64 Native Tools Command Prompt for VS 2019」
      在该终端中先激活你的Anaconda虚拟环境,再运行你的代码,此时cl.exe已经被自动加入当前终端的环境变量,编译可正常找到编译器。
  3. 永久配置环境变量(可选)
    如果不想每次都打开VS专用终端,可以手动将cl.exe所在路径添加到系统PATH环境变量中,典型路径参考:
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\Hostx64\x64

注意将路径中的VS版本、MSVC版本号替换为你本地实际的版本,添加完成后重启终端,输入where cl如果能正常返回cl.exe的完整路径即为配置成功。
4. 额外校验项
如果是编译CUDA扩展,还需要确认CUDA工具包已正确安装且环境变量生效,在终端输入nvcc -V能正常返回CUDA版本信息即可。

内容的提问来源于stack exchange,提问作者Ke Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:57:03