3D人体姿态估计:detectron2安装报错 No module named ‘torch‘,但环境里有pytorch,解决方案

部署运行你感兴趣的模型镜像

一、解决方法

        detectron2是meta的2D人体姿态估计项目,Poseformer、MHformer等都需要该项目推断2D关键点。然而该项目的安装非常坑爹,报错五花八门,本文针对安装detectron2出现 No module named 'torch' ,但环境里实际存在pytorch,这种报错给出一个解决方法。

1.首先确定你确实装了pytorch,conda环境或者pip里查看能有pytorch、torchvision。torchvision官方的install.md文档里说也是需要的。
2.安装detectron2,注意!!!安装时额外加上 --config-settings editable_mode=compat” 和 “--no-build-isolation 这2串命令,比如

用git安装

git clone https://github.com/facebookresearch/detectron2.git
python -m pip install -e detectron2 --config-settings editable_mode=compat --no-build-isolation

或者你下载detectron2到本地了,那就是这样安装

python -m pip install -e "D:\test\detectron2" --config-settings editable_mode=compat --no-build-isolation

上面"D:\test\detectron2"换成你自己的目录
然后安装没有任何报错,就说明安装完成了。

3.安装完检查一下,有就说明成功了

二、原理解释

1. --config-settings editable_mode=compat

        这串参数其实是 pip 在安装本地源码包(特别是像 Detectron2 这种大型源码项目)时非常关键的“控制选项”。

        它们直接影响 pip 是怎么构建、隔离和安装你的项目的。这个参数是 PEP 660(新版可编辑安装标准) 引入的配置项。

        它告诉 pip:“用兼容旧版 setup.py 的方式安装可编辑包”。

        pip ≥ 23 之后默认采用 PEP 660 新机制

        旧项目(比如 Detectron2)仍然使用传统的 setup.py develop

        如果不加这个参数,pip 会用新的构建协议,而 setup.py 不兼容,出现报错;

error: subprocess-exited-with-error

        加上--config-settings editable_mode=compat参数等价于告诉 pip:

“别用新的方式安装可编辑包,用老版本的兼容模式(setup.py develop)。”


2. --no-build-isolation

        默认情况下,pip 在安装一个源码包时,会:        

                · 临时创建一个“构建环境”(隔离的临时虚拟环境);

                · 在里面安装 pyproject.toml 里声明的构建依赖;

                · 在这个独立环境里运行 setup.py;

                · 最后把结果安装回当前环境。

         这样做是为了 隔离依赖冲突。 Detectron2 的 setup.py 会 import torch。但在临时构建环境中,没有 torch(pip 不会带上你的原始环境依赖)。所以会报:

ModuleNotFoundError: No module named 'torch'

         加上 --no-build-isolation,告诉 pip:

“不要创建临时构建环境,直接用我当前 Anaconda 环境里的依赖(包括 torch、CUDA)。”

        这样 setup.py 才能找到 torchfvcoreyaml 等依赖包。


3. 总结

综合来看,这三个选项协同工作:

参数

含义

为什么需要

-e .

可编辑安装(开发模式)

方便调试源码

--config-settings editable_mode=compat

使用旧版 setup.py 可编辑安装兼容模式

Detectron2 不支持 PEP 660

--no-build-isolation

不创建临时构建环境

让 setup.py 能访问已安装的 torch 等依赖


完整流程图(这条命令在做什么)

python -m pip install -e . --config-settings editable_mode=compat --no-build-isolation
│  
├─► 进入当前目录(detectron2)      
├─► 读取 setup.py(旧格式项目)    
│
├─► 在当前环境构建,而非隔离虚拟环境 (--no-build-isolation)
│
├─► 使用旧的 develop 模式安装 (--config-settings editable_mode=compat)      
│   
└─► 写入 detectron2.egg-link 到 site-packages

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值