You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用awscli-local报错:无法从botocore.utils导入SSOTokenFetcher

解决awslocal报错:cannot import name 'SSOTokenFetcher' from 'botocore.utils'

问题根源

awscli-local(awslocal)与你当前安装的aws-cli v2.9.19依赖的botocore版本存在兼容性冲突:SSOTokenFetcher在新版botocore中已被移除/重构,但awslocal的代码仍在尝试导入该类。

解决方案

方法1:使用独立虚拟环境(最推荐,彻底隔离依赖)

  1. 安装虚拟环境工具(Ubuntu/Debian):
    sudo apt install python3-venv
    
  2. 创建并激活专属虚拟环境:
    python3 -m venv ~/awslocal-env
    source ~/awslocal-env/bin/activate
    
  3. 在虚拟环境内安装兼容版本的依赖:
    pip install awscli-local botocore==1.29.19 awscli==2.9.19
    
  4. 后续使用awslocal时,先激活虚拟环境,或把虚拟环境的awslocal路径加入系统PATH(比如在~/.bashrc中添加:export PATH="$HOME/awslocal-env/bin:$PATH")。

方法2:降级botocore到兼容版本(不推荐,可能影响标准aws-cli)

  1. 查看当前botocore版本:
    pip show botocore
    
  2. 强制降级到与aws-cli v2.9.19匹配的版本(对应botocore 1.29.19):
    pip install botocore==1.29.19 --force-reinstall
    

方法3:使用Docker版awslocal(完全规避本地Python依赖)

直接用Docker容器替代本地awslocal,完全隔离依赖冲突:

  1. 执行单条命令示例:
    docker run --rm -it -e AWS_ACCESS_KEY_ID=test -e AWS_SECRET_ACCESS_KEY=test -e AWS_DEFAULT_REGION=us-east-1 localstack/aws-cli-local s3 ls
    
  2. 设置别名简化使用(添加到~/.bashrc或~/.zshrc):
    alias awslocal='docker run --rm -it -e AWS_ACCESS_KEY_ID=test -e AWS_SECRET_ACCESS_KEY=test -e AWS_DEFAULT_REGION=us-east-1 localstack/aws-cli-local'
    
  3. 生效别名:
    source ~/.bashrc
    

注意事项

  • 避免在全局Python环境中混合调整aws-cli和awslocal的依赖,极易引发版本冲突。
  • 虚拟环境和Docker方案是长期解决依赖问题的最优选择。

内容的提问来源于stack exchange,提问作者M T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:35:04