Dockerfile通过Anaconda安装Comet ML 3.18报glibc相关UnsatisfiableError
冲突原因说明
这个报错属于conda依赖解析的误判,并非你的系统glibc版本不满足要求:
- comet-ml 3.18版本的conda包在发布时,依赖声明中对__glibc虚拟包的约束存在隐性上限,和新版conda的严格依赖解析逻辑不兼容,即便实际安装的glibc 2.31满足>=2.17的显性要求,解析器仍会判定约束冲突。
- continuumio/anaconda3:latest镜像预装的conda版本较高,默认启用的新版依赖解析器对系统级虚拟包的校验规则更严格,进一步放大了这个问题,这也是你在Ubuntu20.04本地和集群环境都能复现的核心原因。
可行解决方案
你可以任选以下一种方法解决问题:
方法1:换用pip安装(最简便)
直接用pip安装指定版本的comet-ml,避开conda的依赖解析校验,修改后的Dockerfile如下:
FROM continuumio/anaconda3:latest RUN pip install comet_ml==3.18 ENTRYPOINT [ "/bin/bash" ]
Anaconda环境自带pip,安装的包和conda安装的功能完全一致,不会影响后续使用。
方法2:调整conda安装参数
在conda安装命令中添加参数跳过系统约束校验,无需修改其他配置:
FROM continuumio/anaconda3:latest RUN conda install -c comet_ml comet_ml=3.18 -y --no-channel-priority --ignore-installed libgcc-ng ENTRYPOINT [ "/bin/bash" ]
方法3:更换匹配的基础镜像
改用2021版的Anaconda3镜像,其内置的依赖链和comet-ml 3.18完全兼容,不会触发冲突:
FROM continuumio/anaconda3:2021.05 RUN conda install -c comet_ml comet_ml=3.18 -y ENTRYPOINT [ "/bin/bash" ]
内容的提问来源于stack exchange,提问作者Florian Blume
相关产品推荐
相关产品推荐

