Elastic Beanstalk部署Django应用pip安装Django==4.0.5失败
问题诱因
该问题和pip源无关,核心原因是Elastic Beanstalk当前使用的Python运行环境版本过低,不满足Django 4.0.5的版本要求:
- Django 4.0 及以上版本的最低Python版本要求为3.8,完全不支持Python 3.7及更早版本
- 从部署日志可以看到,pip拉取的
backports.zoneinfo包为cp37-cp37m编译版本,直接证明当前EB环境的Python解释器版本为3.7 - pip安装包时会自动过滤不兼容当前Python版本的发行版,因此在Python3.7环境下能检索到的最高Django版本为支持Python3.7的最终版本3.2.13,自然找不到Django==4.0.5的匹配包。
解决方案
根据实际需求二选一即可:
- 推荐方案:升级EB平台的Python版本
重新选择Elastic Beanstalk的平台分支,使用基于Amazon Linux 2、搭载Python 3.8/3.9/3.10的官方平台版本重新部署即可,升级后pip可正常识别安装Django 4.0.5。注意如果升级到Python 3.9及以上版本,可以把requirements.txt里的backports.zoneinfo==0.2.1删掉,高版本Python已内置zoneinfo模块,强行安装该兼容包反而可能引发依赖冲突。 - 兼容方案:降级Django版本适配现有Python3.7环境
如果暂时无法升级EB的Python版本,将requirements.txt里的Django版本修改为Django==3.2.13即可,3.2.x是Django的长期支持(LTS)版本,兼容Python3.7,安全维护会持续到2024年4月。注意降级后需要排查项目代码,确认没有使用Django4.0专属的API特性,避免运行时报错。
内容的提问来源于stack exchange,提问作者Sean Dougherty
相关产品推荐
相关产品推荐

