目录
问题描述
在从github上克隆并运行 mmyolo
或 mmdetection
时,报错:
ModuleNotFoundError: No module named 'mmengine'
但实际上,已经通过 pip install -v -e . 进行过安装,并且提示安装成功。但是Python 仍然找不到 mmengine。
可能的原因
-
安装路径和 Python 搜索路径不匹配
- 运行
pip show mmengine
,发现mmengine
安装在 非标准路径(如/tmp/MMlab/mmengine
)。 - 运行
python -c "import sys; print(sys.path)"
,发现sys.path
中没有mmengine
所在的路径。
- 运行
-
Python 解释器和
pip
不匹配- 运行
which python
发现 Python 位置是/usr/bin/python
,但pip
可能安装到/usr/local/lib/python3.8/dist-packages/
,导致模块无法找到。
- 运行
解决方法
解决方案 1:手动添加 mmengine
安装路径到 PYTHONPATH
1.找到 mmengine
的安装路径
在终端输入pip show mmengine
会出现这样的提示Name: mmengine Version: 0.7.2 Location: /tmp/MMlab/mmengine
这里 Location
的值 就是 mmengine
安装路径,在不同的环境中可能不同。
2.添加到 PYTHONPATH
使用 export PYTHONPATH
将其添加到 Python 的搜索路径:
export PYTHONPATH=$PYTHONPATH:/tmp/MMlab/mmengine
然后,尝试导入 mmengine
:
python -c "import mmengine; print(mmengine.__version__)"
如果输出 0.7.2
(或其他版本号),说明解决了问题。
3.让 PYTHONPATH
永久生效
上述 export
命令 仅对当前终端会话有效,如果要永久生效,可以将其添加到 ~/.bashrc
或 ~/.profile
:
echo 'export PYTHONPATH=$PYTHONPATH:/tmp/MMlab/mmengine' >> ~/.bashrc source ~/.bashrc
解决方案 2:将 mmengine
重新安装到标准 Python 库路径
如果你不想手动设置 PYTHONPATH
,可以直接将 mmengine
重新安装到 Python 的默认路径。
1.运行 python -m pip
重新安装
python -m pip install --force-reinstall mmengine
这里使用:python -m pip
确保 pip
与 python
版本匹配,避免安装到错误位置。
--force-reinstall
先卸载,再重新安装,防止旧版本残留。
2.检查是否安装成功
输入:python -c "import mmengine; print(mmengine.__version__)"
如果输出 0.7.2
,说明问题解决。
3.确保 sys.path
包含安装目录
运行:python -c "import sys; print(sys.path)"
检查是否包含 /usr/local/lib/python3.8/dist-packages/
(或 pip show mmengine
提供的路径)。