You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何用pip freeze生成的requirements在Docker重建时出现依赖冲突?

问题原因分析
  • pip freeze仅导出Python环境中的Python包及其版本,完全不会记录系统层面的依赖(比如cairo这类系统库)。
  • 你第一次创建容器时,自定义基础镜像里已经预装了cairo系统库,所以安装pycairo和PyGObject时,pip能顺利完成编译/安装流程。但导出的requirements.txt里只会留下pycairo==x.x.x、PyGObject==y.y.y这类记录,不会提及需要先装系统级的cairo依赖。
  • 重建镜像时,如果你的Dockerfile没有明确添加安装cairo系统库的步骤(比如apt-get install -y libcairo2-dev这类命令),当pip尝试安装pycairo时,会因为找不到底层的cairo系统依赖而编译失败,抛出你看到的错误。
  • 额外补充:如果你的私有pip仓库里提供的是预编译好的pycairo wheel包(该wheel是在已安装cairo的环境下编译生成的),第一次安装时可以直接用wheel跳过编译;但重建时如果因为网络或仓库配置问题拉不到这个预编译wheel,pip就会 fallback 到源码编译,这时候就必须要有系统级的cairo依赖才能成功。

内容的提问来源于stack exchange,提问作者Carlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:42:02