EC2 Linux运行aws configure报docs.docstring导入错误
报错根因定位
从报错栈与环境信息可直接定位两处版本错位问题:
- 系统默认调用的
/usr/bin/aws可执行文件,绑定的是系统自带Python2.7运行环境,并非你当前使用的Python3.5环境 - 你此前通过pip安装的botocore版本,和当前调用的awscli版本存在结构不兼容:高版本botocore调整了内部模块目录,移除了旧版awscli依赖的
botocore.docs.docstring模块路径,直接触发ImportError
分步解决步骤
- 先确认环境路径优先级
执行which -a aws,列出系统中所有aws可执行文件的路径,确认终端默认优先调用的路径;执行head -1 /usr/bin/aws,可看到该文件默认使用Python2.7解释器运行。 - 根据使用场景二选一修复:
- 场景1:继续使用系统apt安装的低版本awscli(绑定Python2.7的版本)
将Python2.7环境下的botocore降级到与当前awscli 1.18.223、boto3 1.16.63完全匹配的版本,执行命令:python2.7 -m pip install botocore==1.19.63
该版本的botocore完整保留docs.docstring模块结构,安装完成后直接重新执行aws configure即可。 - 场景2:统一使用当前Python3.5环境运行awscli,避免混用双Python环境
先卸载系统中绑定Python2.7的老旧awscli,避免路径优先级冲突:sudo apt remove awscli
再通过当前pip安装兼容Python3.5的匹配版本组件(Python3.5最高支持的awscli 1.20系列版本):pip install awscli==1.20.10 boto3==1.17.10 botocore==1.20.10
安装完成后确认which aws指向pip对应的安装路径(通常为/usr/local/bin/aws),再执行配置命令验证。
- 场景1:继续使用系统apt安装的低版本awscli(绑定Python2.7的版本)
- 残留异常文件排查
若安装完成后仍报相同错误,检查/usr/local/lib/python2.7/site-packages/路径下是否存在版本错位的botocore残留文件夹,删除残留目录后重新执行对应版本的安装命令即可。注意不要直接安装最新版botocore,最新版已完全移除旧模块结构,不兼容Python2.7与老版本awscli。
内容的提问来源于stack exchange,提问作者kJ kanishk
相关产品推荐
相关产品推荐

