Django Web应用部署Heroku失败:依赖冲突问题求助
解决Heroku部署中的依赖冲突问题
问题根源
你的部署失败源于两个核心问题:
- 冗余开发依赖:
awsebcli是AWS Elastic Beanstalk的命令行工具,属于本地开发时使用的工具,完全不需要部署到Heroku生产环境。它要求botocore版本在1.23.41到1.24.0之间,而你指定的boto3==1.26.59需要botocore>=1.29.59,两者版本范围完全不重叠,直接导致依赖冲突。 - 版本不匹配:你手动固定的
botocore==1.23.50和boto3==1.26.59版本不兼容——boto3与botocore的版本是严格绑定的,高版本boto3必须搭配对应版本的botocore才能正常工作。
解决方案步骤
- 移除不必要的依赖:从
requirements.txt中删除awsebcli==3.20.3这一行。 - 修复botocore版本:
选项1:删除botocore==1.23.50的版本固定,让pip自动安装与boto3==1.26.59兼容的botocore版本。
选项2:手动将botocore版本更新为匹配值,比如botocore==1.29.59(这是boto3 1.26.59对应的官方兼容版本)。 - 清理冗余开发依赖:检查
requirements.txt中是否还有其他仅用于本地开发的包(如virtualenv),如果应用运行不需要,也可以移除以简化依赖结构。
修改后的requirements.txt关键片段示例
asgiref==3.6.0 boto3==1.26.59 # 移除awsebcli和旧版botocore,或替换为兼容版本 # botocore==1.29.59 # 可选:手动指定兼容版本 cement==2.8.2 ... # 保留其他必要依赖
完成上述修改后,重新提交代码到Heroku即可解决部署冲突。
内容的提问来源于stack exchange,提问作者Sizwe
相关产品推荐
相关产品推荐

