error: subprocess-exited-with-error【已解决】
问题详述
安装mmdetection的时候出现了如下错误:
(mmdet) [root@localhost mmdetection]# Using pip 25.1.1 from /root/mmdet/lib64/python3.9/site-packages/pip (python 3.9)
-bash: syntax error near unexpected token `('
(mmdet) [root@localhost mmdetection]# Obtaining file:///root/mmdetectionRunning command Checking if build backend supports build_editableChecking if build backend supports build_editable ... doneRunning command Preparing metadata (pyproject.toml)running dist_info
-bash: Obtaining: command not foundcreating /tmp/pip-modern-metadata-g_g33xul/mmdet.egg-infowriting manifest file '/tmp/pip-modern-metadata-g_g33xul/mmdet.egg-info/SOURCES.txt'warning: no files found matching 'mmdet/VERSION'warning: no files found matching 'mmdet/.mim/demo/*/*'writing manifest file '/tmp/pip-modern-metadata-g_g33xul/mmdet.egg-info/SOURCES.txt'error: invalid command 'bdist_wheel'error: subprocess-exited-with-error× Preparing metadata (pyproject.toml) did not run successfully.│ exit code: 1╰─> See above for output.
解决方法
# 4. 进入项目目录
cd ~/mmdetection# 5. 安装构建依赖
pip install -r requirements/build.txt
pip install -r requirements/optional.txt# 6. 预构建扩展
python setup.py build_ext# 7. 安装MMDetection
python setup.py develop
如果不行可以从下面的方式中找解决方法
1. 确保环境干净
# 退出当前虚拟环境
deactivate# 删除现有虚拟环境
rm -rf ~/mmdet# 创建新的虚拟环境
python -m venv ~/mmdet
source ~/mmdet/bin/activate
2. 安装基础依赖
# 更新pip和安装必要工具
pip install --upgrade pip setuptools wheel# 安装系统依赖
sudo yum install geos-devel python3-devel gcc-c++ -y# 安装NumPy开发头文件
pip install numpy cython
3. 修复MMDetection安装问题
# 进入项目目录
cd ~/mmdetection# 先安装构建依赖
pip install -r requirements/build.txt
pip install -r requirements/optional.txt# 生成版本文件(解决VERSION警告)
python setup.py build_ext# 安装MMDetection(使用开发模式)
python setup.py develop
4. 替代安装方法(如果上述失败)
# 使用openmim安装
pip install openmim
mim install -e .
5. 验证安装
# 检查MMDetection是否安装成功
python -c "import mmdet; print(mmdet.__version__)"# 测试是否可以导入
python -c "from mmdet.apis import init_detector; print('Success!')"
如果仍然遇到问题
方案A:手动安装所有依赖
# 安装所有requirements中的依赖
for req in $(ls requirements/*.txt); dopip install -r $req
done# 然后尝试安装
python setup.py develop
方案B:使用Docker安装
# 使用官方MMDetection Docker镜像
docker pull mmdetection/mmdetection:latest# 或者自己构建
docker build -t mmdetection . -f docker/Dockerfile
方案C:检查项目完整性
# 确保项目文件完整
git status
git reset --hard
git clean -fdx# 重新克隆项目
cd ~
rm -rf mmdetection
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
完整安装脚本
#!/bin/bash# 1. 创建并激活虚拟环境
python -m venv ~/mmdet
source ~/mmdet/bin/activate# 2. 安装系统依赖
sudo yum install geos-devel python3-devel gcc-c++ -y# 3. 更新pip和安装基础包
pip install --upgrade pip setuptools wheel numpy cython# 4. 进入项目目录
cd ~/mmdetection# 5. 安装构建依赖
pip install -r requirements/build.txt
pip install -r requirements/optional.txt# 6. 预构建扩展
python setup.py build_ext# 7. 安装MMDetection
python setup.py develop# 8. 验证安装
python -c "import mmdet; print(f'MMDetection version: {mmdet.__version__}')"
注意事项
-
不要复制粘贴命令输出:
- 只执行命令本身,不要复制粘贴命令的输出结果
-
权限问题:
- 避免使用root用户,如果必须使用,请确保环境一致
sudo chown -R $USER:$USER ~/mmdet sudo chown -R $USER:$USER ~/mmdetection
-
日志分析:
- 如果安装失败,检查详细日志:
pip install -v -e . 2>&1 | tee install.log
-
版本兼容性:
- 确保Python版本(3.6-3.9)与MMDetection兼容
- 确保PyTorch版本匹配
这些步骤应该能解决您遇到的 bdist_wheel
错误和文件找不到的问题。关键是确保安装所有构建依赖并预先构建扩展模块。