Heroku部署Python 3.7.9失败:请求的运行时在heroku-18栈不可用
解决Heroku部署Python 3.7.9到heroku-18栈失败的问题
我之前部署Python项目到Heroku时也踩过这个一模一样的坑!报错的核心原因很直白:heroku-18这个旧栈已经不再支持Python 3.7.9了。Heroku的每个栈版本都绑定了特定的Python运行时支持范围,旧栈会随着时间逐步淘汰对较老Python版本的兼容。
给你两个落地可行的解决方案:
方案一:升级Heroku应用栈到新版本
切换到更现代的栈(比如heroku-20或heroku-22),这些栈依然支持Python 3.7.9,同时也能兼容更新的Python版本。操作步骤很简单:
- 在本地终端运行命令切换栈:
heroku stack:set heroku-20 # 或者选择更新的heroku-22:heroku stack:set heroku-22 - 重新push你的代码到Heroku,部署流程应该就能正常识别Python 3.7.9了。
方案二:更换为heroku-18支持的Python版本
如果不想升级栈,那就得把Python版本换成heroku-18兼容的版本,比如该栈支持的Python 3.8.x系列稳定版:
- 修改项目根目录下的
runtime.txt,把内容改成类似:
注意:格式必须严格是python-3.8.17python-x.y.z,不能有多余空格、换行或隐形字符。 - 同步更新
requirements.txt里的依赖包,确保它们都兼容你选择的新Python版本。 - 提交修改后重新push到Heroku。
另外提个容易忽略的小细节:检查你的runtime.txt有没有复制粘贴带来的隐形字符,有时候这些不可见的编码问题也会导致Heroku识别失败。
内容的提问来源于stack exchange,提问作者Esponjosin
相关产品推荐
相关产品推荐

