Heroku部署时pip依赖安装失败求助(原长期可用流程突发失效)
这问题我之前踩过坑!你一直用的git push heroku master突然失效,从报错片段看,核心问题是Heroku在安装django-widget-tweaks这个Git仓库依赖时出了状况。给你几个靠谱的排查和解决方向:
1. 修正requirements.txt里的Git依赖写法
你的requirements.txt里应该有类似这样的行:git+https://github.com/julianogouveia/django-widget-tweaks/#egg=django-widget-tweaks,这种不带版本锚点的写法很容易因为仓库更新、Heroku的pip版本兼容问题失效。
- 建议改成绑定具体commit哈希的格式:
git+https://github.com/julianogouveia/django-widget-tweaks@abc1234#egg=django-widget-tweaks(把abc1234换成仓库里实际存在的commit哈希),这样能固定依赖版本,避免仓库变动带来的意外。 - 如果这个包已经发布到PyPI了,直接用
django-widget-tweaks==1.4.12(替换成你需要的版本号)会更稳定,Heroku处理PyPI包的流程比Git仓库更成熟。
2. 清理Heroku的依赖缓存
Heroku会缓存之前安装过的依赖,有时候旧缓存会干扰新的部署。执行下面的命令清理缓存,然后重新部署:
heroku repo:purge_cache -a 你的应用名称 git push heroku master
3. 检查Python运行环境一致性
确认你的项目根目录下的runtime.txt指定了正确的Python版本(比如python-3.9.16),有时候Python版本不匹配会导致pip拉取Git依赖失败。你可以用这条命令查看Heroku当前的Python版本:
heroku run python --version -a 你的应用名称
尽量让本地开发环境的Python版本和Heroku保持一致。
4. 本地先验证依赖安装
在本地创建一个全新的虚拟环境,运行pip install -r requirements.txt,看看能不能成功安装:
- 如果本地也失败,那问题出在依赖本身:比如仓库地址写错了、分支不存在,或者仓库里缺少
setup.py/pyproject.toml这类打包必需的文件。 - 如果本地能成功,那就是Heroku的环境问题,你可以提交一个空commit触发强制重新部署:
git commit --allow-empty -m "触发重新部署" git push heroku master
附上你提供的报错片段:
remote: -----> Python app detected
remote: -----> Installing pip
remote: -----> Installing requirements with pip
remote: Obtaining django-widget-tweaks from git+https://github.com/julianogouveia/django-widget-tweaks/#egg=django-widget-tweaks (from -r /tmp/build_843fc05109f047351641f1b9e1db069d/require...
内容的提问来源于stack exchange,提问作者Juliano Gouveia

