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

安装mmcv编译失败求助:MSVC cl.exe退出状态2(CascadeTabNet适配)

CascadeTabNet复现中mmcv编译失败的解决建议

环境说明

Win11系统,Python 3.8、PyTorch 1.4.0、torchvision 0.5.0,仅CPU运行,复现GitHub表格识别项目CascadeTabNet时,安装mmcv出现编译失败,报错信息如下:

d:\academic\internship\python\lib\site-packages\torch\include\ATen\core\TensorMethods.h(1417): note: 参见“at::Tensor::index”的声明
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(40): note: 尝试匹配参数列表“(initializer list)”时        
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(41): error C2065: “None”: 未声明的标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(41): error C3861: “Slice”: 找不到标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(42): error C2065: “None”: 未声明的标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(42): error C3861: “Slice”: 找不到标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(44): error C2065: “None”: 未声明的标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(44): error C3861: “Slice”: 找不到标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(45): error C2065: “None”: 未声明的标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(45): error C3861: “Slice”: 找不到标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(45): error C2664: “at::Tensor at::Tensor::index(at::TensorList) const”: 无法将参数 1 从“initializer list”转换为“at::TensorList”
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(45): note: 无构造函数可以接受源类型,或构造函数重载决策不明确
      d:\academic\internship\python\lib\site-packages\torch\include\ATen\core\TensorMethods.h(1417): note: 参见“at::Tensor::index”的声明
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(45): note: 尝试匹配参数列表“(initializer list)”时        
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(46): error C2065: “None”: 未声明的标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(46): error C3861: “Slice”: 找不到标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(47): error C2065: “None”: 未声明的标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(47): error C3861: “Slice”: 找不到标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(49): error C2065: “None”: 未声明的标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(49): error C3861: “Slice”: 找不到标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(49): error C2065: “None”: 未声明的标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(51): error C2065: “None”: 未声明的标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(51): error C3861: “Slice”: 找不到标识符
      ./mmcv/ops/csrc/pytorch/cpu\bbox_overlaps_cpu.cpp(51): error C2065: “None”: 未声明的标识符
      error: command 'D:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.36.32532\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for mmcv
  Running setup.py clean for mmcv
Failed to build mmcv
ERROR: Could not build wheels for mmcv, which is required to install pyproject.toml-based projects

解决建议

  • 安装PyTorch1.4.0兼容的mmcv版本:报错核心是新mmcv使用的C++ API在PyTorch1.4.0中不存在(如Slice、None的定义)。需安装对应版本的mmcv-full,比如mmcv-full==1.2.7,执行命令:

    pip install mmcv-full==1.2.7
    

    若仍有问题,可直接安装对应CPU版本的预编译包,避免源码编译的兼容性问题。

  • 更换VS编译器版本:当前使用VS2022编译器,其版本过高,与PyTorch1.4.0的头文件兼容性差。建议安装VS2019的Build Tools,配置环境变量让cl.exe指向VS2019的编译器路径,再重新尝试安装。

  • 手动修改mmcv源码(临时方案):打开报错的bbox_overlaps_cpu.cpp文件,将所有Slice替换为at::Slice,None替换为at::NoTensor(),并在文件开头添加using namespace at;,再重新执行安装命令。此方法需逐个修改报错文件,适合临时应急。

  • 确认环境位数一致性:检查Python、PyTorch、VS编译器均为64位,避免因架构不匹配导致的编译失败。

内容的提问来源于stack exchange,提问作者jieyv lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:46:12