MMCV(2.1.0)报错:ModuleNotFoundError: No module named 'mmcv._ext' 求助
解决MMCV 2.x安装后
ModuleNotFoundError: No module named 'mmcv._ext'问题 问题背景
在Conda Python 3.10环境中,通过pip install mmcv或mim install mmcv安装MMCV 2.0.0+版本后,运行代码时报错ModuleNotFoundError: No module named 'mmcv._ext',核心原因是MMCV 2.x版本的算子扩展模块未正确编译或安装。
解决方案步骤
1. 彻底清理现有MMCV残留
首先卸载所有已安装的MMCV相关包:
pip uninstall -y mmcv mmcv-full
检查是否还有残留:
pip list | grep mmcv
如果仍有输出,手动删除Conda环境site-packages目录下的mmcv文件夹(路径类似/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmcv)。
2. 确认环境依赖
- 编译工具:
- macOS:安装Xcode命令行工具:
xcode-select --install - Linux:安装GCC/G++:
conda install -c conda-forge gcc_linux-64 gxx_linux-64
- macOS:安装Xcode命令行工具:
- PyTorch版本匹配:MMCV 2.x需要PyTorch 1.13.0及以上版本,确认PyTorch安装正常:
python -c "import torch; print(torch.__version__)"
3. 使用MIM重新安装MMCV(推荐)
MIM会自动匹配你的PyTorch、CUDA和Python版本,安装适配的MMCV包:
# 先安装openmim(未安装的话) pip install openmim # 安装MMCV 2.x版本 mim install mmcv>=2.0.0
4. 手动编译安装(若MIM安装失败)
如果预编译包适配有问题,手动编译安装带算子扩展的MMCV:
# 克隆MMCV仓库 git clone https://github.com/open-mmlab/mmcv.git cd mmcv # 安装可选依赖 pip install -r requirements/optional.txt # 编译并安装(MMCV_WITH_OPS=1开启算子扩展编译) MMCV_WITH_OPS=1 pip install -e .
5. 验证安装
运行以下命令确认安装成功:
python -c "import mmcv; print(f'MMCV版本: {mmcv.__version__}'); from mmcv.ops import point_sample; print('算子模块导入成功')"
完整报错信息
File "/Users/andrewmccalister/Documents/segmentTool/FoodSeg103/demo/deployments/image_demo_deployment/updated_source_mb.py", line 14, in <module> from mmseg.apis import inference_model, init_model, show_result_pyplot File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmseg/apis/__init__.py", line 2, in <module> from .inference import inference_model, init_model, show_result_pyplot File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmseg/apis/inference.py", line 14, in <module> from mmseg.models import BaseSegmentor File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmseg/models/__init__.py", line 3, in <module> from .backbones import * # noqa: F401,F403 File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmseg/models/backbones/__init__.py", line 2, in <module> from .beit import BEiT File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmseg/models/backbones/beit.py", line 19, in <module> from ..utils import PatchEmbed File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmseg/models/utils/__init__.py", line 2, in <module> from .basic_block import BasicBlock, Bottleneck File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmseg/models/utils/basic_block.py", line 10, in <module> from mmseg.utils import OptConfigType File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmseg/utils/__init__.py", line 24, in <module> from .mask_classification import MatchMasks, seg_data_to_instance_data File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmseg/utils/mask_classification.py", line 5, in <module> from mmcv.ops import point_sample File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmcv/ops/__init__.py", line 3, in <module> from .active_rotated_filter import active_rotated_filter File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmcv/ops/active_rotated_filter.py", line 10, in <module> ext_module = ext_loader.load_ext( File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/site-packages/mmcv/utils/ext_loader.py", line 13, in load_ext ext = importlib.import_module('mmcv.' + name) File "/Users/andrewmccalister/miniconda3/envs/py_3.10/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ModuleNotFoundError: No module named 'mmcv._ext'
内容的提问来源于stack exchange,提问作者Andrew McCalister
相关产品推荐
相关产品推荐

