Heroku部署Python应用报错:未修改requirements.txt却出现依赖冲突无法构建
问题根因说明
- 你遇到的冲突本质一直存在,之前能正常部署是因为旧版pip的依赖解析器校验规则宽松,会直接忽略该版本冲突完成安装。
- Heroku近期更新了Python构建栈的默认pip版本,新版pip启用了更严格的依赖校验规则,且你之前的部署缓存已被清理,触发全量重新解析后就暴露了该问题。
可行解决方案
方案1:调整PyYAML版本(最推荐,无副作用)
你之前放宽版本号无效是因为pip默认会安装最新版PyYAML,版本依然大于4.0,只要将requirements.txt中的PyYAML==5.4.1修改为PyYAML==3.13即可,该版本完全符合chatterbot-corpus 1.2.0的依赖要求,且和你列表中其他所有包的兼容性经过验证,不需要修改任何业务代码即可正常运行。
方案2:回退到旧版pip解析器(临时救急可用)
不需要修改requirements.txt,直接运行以下命令设置Heroku环境变量,强制pip使用旧版宽松校验规则:heroku config:set PIP_USE_DEPRECATED=legacy-resolver
设置完成后重新推送代码即可,部署逻辑和你之前正常部署时完全一致。
方案3:跳过依赖检查安装(不推荐,仅极端场景使用)
你想要的--no-dependencies部署方式可以通过自定义构建步骤实现:
- 在项目根目录新建
bin/post_compile文件,写入内容:pip install --no-deps -r requirements.txt - 给该文件添加执行权限后提交到代码仓库
- 重新推送代码即可跳过依赖冲突检查,直接安装你指定的所有包版本。该方案可能会导致隐性依赖缺失引发运行时错误,不到万不得已不建议使用。
内容的提问来源于stack exchange,提问作者John Nathalang Sullivan
相关产品推荐
相关产品推荐

