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

升级Python至3.6.5时Django应用部署Heroku失败

这种情况我之前在部署Django到Heroku时也碰到过,不固定的错误加上collectstatic阶段的ImportError,大多是环境缓存、依赖版本不匹配或者Heroku构建环境的小问题导致的,给你几个实用的解决步骤:

排查与解决方法

1. 强制清理Heroku构建缓存

Heroku默认会复用之前的构建缓存,这很容易导致新旧Python版本的依赖包混在一起,也是错误“不固定”的核心原因之一。你可以用这条命令彻底清除缓存:

heroku repo:purge_cache -a 你的应用名称

执行完后重新推送代码,让Heroku完全从头构建适配Python 3.6.5的环境。

2. 锁定所有依赖的版本号

检查你的requirements.txt,确保没有使用模糊的版本依赖(比如django>=2.0这种写法),这类写法可能会安装和Python 3.6.5不兼容的新版本包。

建议把所有依赖都明确指定兼容的固定版本,比如:

django==2.2.24
gunicorn==20.1.0
...

修改后先在本地执行pip install -r requirements.txt,然后运行python manage.py collectstatic --noinput确认本地完全正常,再推送到Heroku。

3. 检查runtime.txt的格式正确性

有时候格式错误会让Heroku识别错Python版本,导致环境混乱。确保runtime.txt满足:

  • 只有一行内容:python-3.6.5
  • 没有多余的空格、换行或注释
  • 版本号格式严格符合Heroku的要求(3.6.5是官方支持的版本,没问题)

4. 手动在Heroku控制台测试collectstatic

如果自动部署还是失败,可以先跳过自动执行的collectstatic,手动排查具体错误:

  1. 在settings.py中添加临时配置关闭自动收集静态文件:
DISABLE_COLLECTSTATIC = 1
  1. 推送代码到Heroku,然后登录Heroku控制台:
heroku run bash -a 你的应用名称
  1. 在控制台中手动执行命令:
python manage.py collectstatic --noinput

这时会看到完整的错误栈,能精准定位是哪个包或模块缺失了split_identifier函数,针对性修复即可。

5. 长远建议:升级Python版本(可选)

虽然Python 3.6.5能暂时解决当前的警告,但Python 3.6已经停止官方维护,Heroku对旧版本的支持也会逐步弱化。如果项目允许,建议升级到Python 3.8及以上的稳定版本,能从根源避免这类版本兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:20:43