使用pip安装AWS EB CLI失败:urllib3 v2兼容性问题解决咨询
AWS EB CLI安装失败(urllib3 v2兼容性问题)
问题现象
GitHub Actions CI中安装AWS EB CLI时出现版本冲突错误:
ERROR: botocore 1.29.81 has requirement urllib3<1.27,>=1.25.4, but you'll have urllib3 2.0.2
强行运行eb deploy会触发导入错误:
ImportError: cannot import name 'DEFAULT_CIPHERS' from 'urllib3.util.ssl_' (/home/runner/.local/lib/python3.8/site-packages/urllib3/util/ssl_.py)
核心原因是urllib3 v2移除了DEFAULT_CIPHERS属性,而旧版本botocore依赖该属性。
为什么会安装urllib3 2.0.2?
你使用的awsebcli==3.20.5直接依赖urllib3>=1.26.5但未设置版本上限;同时它依赖的botocore<1.29.82明确要求urllib3<1.27。由于pip版本解析逻辑,当存在无上限的依赖约束时,旧版pip可能忽略冲突直接安装最新可用版本,最终导致urllib3 2.0.2被安装,违反了botocore的版本要求。
解决办法
1. 短期应急解决
直接在安装命令中强制指定urllib3的版本范围,覆盖默认依赖解析:
pip install urllib3<1.27 awsebcli==3.20.5 --upgrade --user
若场景更复杂,可使用约束文件:
创建constraints.txt文件,内容为:
urllib3<1.27
执行安装命令:
pip install awsebcli==3.20.5 --upgrade --user --constraint constraints.txt
2. 正规解决方式
- 升级兼容版本的awsebcli:官方后续发布的awsebcli版本已修复urllib3版本约束问题,直接安装最新版即可:
若需固定版本,选择明确限制pip install awsebcli --upgrade --userurllib3<2的版本(如3.20.6及以后)。 - 提交Issue反馈:向awsebcli官方仓库提交Issue,指出旧版本(如3.20.5)未正确限制urllib3版本范围导致的兼容性问题,帮助官方完善依赖约束。
内容的提问来源于stack exchange,提问作者JHH
相关产品推荐
相关产品推荐

