安装旧版Boto3解决awsebcli与botocore版本不兼容问题
问题描述
部署Django项目至AWS Elastic Beanstalk时,参考教程使用Boto3对接S3服务,安装Boto3过程中出现依赖冲突报错:
awsebcli 3.20.3 requires botocore<1.24.0,>1.23.41, but you have botocore 1.27.7 which is incompatible.
报错根因:awsebcli 3.20.3 要求botocore版本区间为大于1.23.41且小于1.24.0,当前环境安装的botocore 1.27.7不符合版本约束。PyPI默认文档仅给出boto3通用安装命令,未说明旧版本安装方式,无法直接解决冲突。
解决方案
按优先级从高到低排列可选方案:
环境隔离方案(无后续冲突隐患,首推)
awsebcli是独立的部署命令行工具,不需要和Django项目的运行依赖安装在同一Python环境中。使用pipx安装awsebcli可自动实现环境隔离,从根源上避免和项目内boto3、botocore的版本冲突:- 先安装pipx工具
- 执行命令安装awsebcli:
pipx install awsebcli - 回到项目的虚拟环境中直接安装最新版boto3即可,两边依赖完全独立,不会出现版本不兼容提示。
指定版本安装适配的依赖包
pip原生支持安装指定历史版本的包,无需查找特殊安装说明,操作步骤如下:- 先卸载当前环境中冲突的包:
pip3 uninstall -y boto3 botocore- 安装符合版本要求的botocore,以及和它版本匹配的boto3(boto3与botocore版本严格一一对应,botocore 1.23.41匹配的boto3版本为1.20.41):
pip3 install botocore==1.23.41 boto3==1.20.41- 执行
pip list | grep botocore确认版本处于1.23.41~1.24.0区间内,冲突提示即消失。
升级awsebcli适配新版依赖
3.20.3为较旧版本的awsebcli,其对botocore的版本限制过于严格,升级到最新版awsebcli后即可兼容更高版本的botocore:pip3 install --upgrade awsebcli升级完成后正常安装最新版boto3即可,不会再出现版本冲突报错。
注意:所有依赖操作如果是针对项目虚拟环境执行,需要先激活对应虚拟环境再运行命令,避免误修改全局Python依赖。
内容的提问来源于stack exchange,提问作者kozendgray
相关产品推荐
相关产品推荐

