OnePose_Plus_Plus项目conda环境构建失败及排障求助
解决OnePose_Plus_Plus环境构建中的依赖冲突问题
问题背景
用conda 4.8.2构建OnePose_Plus_Plus项目环境时,执行environment.yaml触发包冲突,最终抛出TypeError: sequence item 0: expected str instance, Channel found错误。尝试用micromamba、mamba解决时,前者卡在元数据下载,后者提示找不到依赖。单独安装包时遇到cudatoolkit=10.1缺失、h5py=3.1.0与openssl冲突、requirements.txt中多包与Python3.7不兼容等问题。目前已将cudatoolkit改为10.2、移除h5py版本限制,但requirements.txt的问题仍未解决。
原始环境配置文件
environment.yml
name: oneposeplus channels: - pytorch - conda-forge - defaults dependencies: - python=3.7 - pytorch=1.8.0 - torchvision=0.9.1 - cudatoolkit=10.1 - ipython - tqdm - matplotlib - pylint - conda-forge::jupyterlab - conda-forge::h5py=3.1.0 - conda-forge::loguru=0.5.3 - conda-forge::scipy - conda-forge::numba - conda-forge::ipdb - conda-forge::albumentations=0.5.1 - pip - pip: - -r requirements.txt
requirements.txt
pytorch-lightning==1.5.10 ray==1.13.0 aiohttp==3.7 aioredis==1.3.1 pydegensac==0.1.2 opencv_python==4.4.0.46 yacs>=0.1.8 pytorch_memlab joblib pytorch3d open3d einops==0.3.0 kornia==0.4.1 autopep8 pickle5==0.0.11 timm>=0.3.2 hydra-core omegaconf pycocotools wandb rich transforms3d natsort plyfile pycolmap==0.3.0
分步解决方案
1. 修复conda版本兼容性bug
conda 4.8.2对conda-forge::这种通道前缀的解析存在bug,导致TypeError。先升级conda到稳定版本:
conda update -n base conda
升级后用原生conda重新创建环境,若仍有冲突,改用mamba(确保已安装mamba):
mamba env create -f environment.yaml
2. 保留已做的核心依赖调整
- 维持cudatoolkit=10.2:10.1的conda源已逐步停止维护,10.2与pytorch1.8.0兼容性良好。
- 保留h5py无版本限制:conda会自动匹配与当前环境兼容的版本,避免和openssl冲突。
3. 调整requirements.txt适配Python3.7
针对Python3.7的兼容性,逐个修改包版本:
- ray:改为
ray[default]==1.13.0,确保安装完整依赖且兼容Python3.7。 - aiohttp:指定为
aiohttp==3.7.4.post0,这是3.7分支最后兼容Python3.7的版本。 - pytorch3d:指定
pytorch3d==0.6.2,适配pytorch1.8.0和Python3.7。 - open3d:指定
open3d==0.15.2,这是支持Python3.7的稳定版本。 - rich:指定
rich==10.16.2,避免过高版本不兼容Python3.7。 - hydra-core:指定
hydra-core==1.1.2,这是支持Python3.7的最高版本。 - pickle5:Python3.7可原生支持pickle5,建议直接移除该行。
- pycolmap==0.3.0:该版本无Python3.7预编译包,若项目允许,升级到
pycolmap>=0.4.0,或从源码编译。
修改后的requirements.txt示例:
pytorch-lightning==1.5.10 ray[default]==1.13.0 aiohttp==3.7.4.post0 aioredis==1.3.1 pydegensac==0.1.2 opencv_python==4.4.0.46 yacs>=0.1.8 pytorch_memlab joblib pytorch3d==0.6.2 open3d==0.15.2 einops==0.3.0 kornia==0.4.1 autopep8 timm>=0.3.2 hydra-core==1.1.2 omegaconf==2.1.2 pycocotools wandb rich==10.16.2 transforms3d natsort plyfile # 若需pycolmap,建议升级版本或从源码编译 # pycolmap>=0.4.0
4. 分阶段安装避免冲突
先安装conda管理的依赖,再单独安装pip依赖:
- 创建环境时跳过pip部分:
conda env create -f environment.yaml --no-pip - 激活环境后安装pip依赖:
conda activate oneposeplus pip install -r requirements.txt
5. 解决mamba/micromamba的网络与依赖查找问题
- 调整channels顺序,将conda-forge设为最高优先级,修改environment.yaml的channels:
channels: - conda-forge - pytorch - defaults - 添加国内镜像源加速下载(可选):
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes
内容的提问来源于stack exchange,提问作者brian2lee
相关产品推荐
相关产品推荐

