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

Heroku与elasticsearch-dsl的python-dateutil依赖冲突问题求助

解决Heroku部署时python-dateutil依赖冲突问题

问题根源

你遇到的冲突本质是:

  • 旧版本heroku==0.1.4强制依赖python-dateutil==1.5,但这个版本使用Python 2的语法(反引号字符串转换),在Python 3.10环境下会触发语法错误
  • elasticsearch-dsl 7.4.0需要支持Python 3的python-dateutil 2.x版本

方案1:移除不必要的heroku包依赖

Heroku平台部署和运行你的Django项目不需要在生产环境安装heroku Python包,这个包仅用于本地调用Heroku API,应放在开发依赖中:

  • 打开requirements.txt,删除heroku==0.1.4这一行
  • 若本地需要使用该包,将其移至requirements-dev.txt,仅在本地执行pip install -r requirements-dev.txt安装
  • 更新依赖并推送部署:
    pip freeze > requirements.txt
    git add requirements.txt
    git commit -m "Remove unused heroku package dependency"
    git push heroku main
    

方案2:升级heroku包到兼容版本

旧版heroku==0.1.4已停止维护,新版本的Heroku Python客户端(如heroku3或官方heroku-python-api)不再依赖过时的python-dateutil版本:

  • 将requirements.txt中的heroku==0.1.4替换为heroku3>=4.2.0(或heroku-python-api>=2.0.0)
  • 安装新依赖并验证本地运行:
    pip install -r requirements.txt
    
  • 推送部署:
    git add requirements.txt
    git commit -m "Upgrade heroku package to resolve dependency conflict"
    git push heroku main
    

方案3:强制指定python-dateutil版本(仅应急使用)

如果必须保留旧版heroku包,可强制安装兼容Python 3的python-dateutil版本(可能导致heroku包功能异常,谨慎使用):

  1. 创建constraints.txt文件,内容为:
    python-dateutil==2.8.2
    
  2. 在requirements.txt开头添加:
    -c constraints.txt
    
  3. 推送部署,Heroku会强制使用指定版本的python-dateutil

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:35:21