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

Django部署至Heroku时已卸载的PyGObject仍被加载导致构建失败如何解决

解决方案

1. 清理Heroku构建缓存

Heroku默认会保留之前构建的依赖缓存,即使你更新了requirements.txt也可能复用旧的依赖链,先执行以下命令清理缓存后重新部署:

heroku plugins:install heroku-builds
heroku builds:cache:purge -a 替换为你的Heroku应用名称

清理完成后重新推送代码到Heroku触发构建。

2. 定位并移除触发依赖的上游包

PyGObject不是你直接导入的依赖,是你requirements清单中某个包的间接可选依赖,且仅在Heroku的Linux容器环境下会被触发安装,本地不会复现。
你可以在本地执行以下命令查看依赖树定位上游包:

pip3 install pipdeptree
pipdeptree --reverse --packages PyGObject

从你给出的依赖清单看,两个高概率触发的包:

  • pycairo==1.20.1:Linux环境下安装时会自动拉取PyGObject作为可选依赖,如果你项目没有用到cairo相关功能,可以直接从requirements.txt中移除该包
  • cm-rgb==0.3.6:硬件RGB控制库,本身依赖pycairo,如果没有用到对应功能也可以直接移除

3. 强制忽略PyGObject安装的临时方案

如果你确实需要用到触发依赖的上游包,可以直接在requirements.txt末尾添加如下规则,强制pip跳过PyGObject的安装:

PyGObject==0.0.0; python_version >= '0'

该规则会让pip判定已经满足PyGObject的版本要求,不会触发下载安装流程。

4. 额外检查项

  • 确认你生成requirements.txt时是在项目专属的虚拟环境下执行的,不要使用全局环境的pip freeze,避免带入全局无关依赖
  • 检查项目根目录是否存在Pipfile、Pipfile.lock等其他包管理文件,Heroku会优先使用这类文件而非requirements.txt,如果你不用这些文件可以直接删除,避免干扰依赖解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:45:03