Aws-cli: 版本 1.13.0 中的 clidriver 已损坏

创建于 2017-11-29  ·  21评论  ·  资料来源: aws/aws-cli

在基于python:3.6.2的 Docker 容器中 pip 安装awscli==1.13.0后,运行任何 aws 命令都会返回

Traceback (most recent call last):
  File "/usr/local/bin/aws", line 19, in <module>
    import awscli.clidriver
  File "/usr/local/lib/python3.6/site-packages/awscli/clidriver.py", line 24, in <module>
    from botocore.history import get_global_history_recorder
ModuleNotFoundError: No module named 'botocore.history'

恢复到awscli==1.12.0并且一切正常。

最有用的评论

这为我修复了它:

$ sudo -H pip install awscli --upgrade

所有21条评论

听起来您的 cli 和 botocore 版本在某些方面不同步。 对于 awscli v1.13.0,请确保您至少拥有 botocore v1.8.3。

我遇到了完全相同的问题:

```[本地][ fcabral@droideka :~]$ sudo pip freeze | egrep '(awscli|boto|boto3|botocore)'
awscli==1.14.5
boto==2.48.0
boto3==1.4.8
botocore==1.8.9

```[LOCAL][fcabral<strong i="12">@droideka</strong>:~]$ aws help
Traceback (most recent call last):
  File "/usr/local/bin/aws", line 19, in <module>
    import awscli.clidriver
  File "/usr/local/lib/python2.7/dist-packages/awscli/clidriver.py", line 24, in <module>
    from botocore.history import get_global_history_recorder
ImportError: No module named history

正如@karimtabet所说,恢复到 1.12.0 有效。

@cabral404完全相同的错误,使用:

aws-cli/1.14.6
botocore/1.8.12
蟒蛇/2.7.12

与我的用户一起运行时遇到同样的问题,如果使用 sudo aws cli 运行良好,从包或 pip 安装时似乎有权限问题。

我的解决方法如下:

  • 使用pip uninstall awscli从 pip 中删除 aws cli
    或者
  • 删除删除 aws-cli 包(如packman -R aws-cli
  • 然后使用 aws 包
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
./awscli-bundle/install -b ~/bin/aws
export PATH=~/bin:$PATH

更多信息在这里http://docs.aws.amazon.com/cli/latest/userguide/awscli-install-bundle.html#install -bundle-user

虽然恢复到早期版本可能有效,但由于导入失败而导致较新版本无法工作,这听起来像是awscli包的安装方式或系统上一般如何管理 python 包的问题。 在这种情况下,可能有另一个版本的 botocore 优先于pip freeze输出中显示的那个版本。

正如@Danpiel提到的,删除所有其他安装方法并使用捆绑安装程序是一种可能的解决方案,因为它使用隔离的 virtualenv 来运行 aws cli。

对于仍然遇到此问题的任何人,请提供以下信息:
1)您使用的是什么操作系统?
2) 你是如何安装awscli包的?
3) 你是如何尝试更新awscli包的?

这为我修复了它:

$ sudo -H pip install awscli --upgrade

aws ec2 describe-regions --query 'Regions[].{Name:RegionName}' --output text --region us-east-1
Traceback (most recent call last):
  File "/usr/bin/aws", line 19, in <module>
    import awscli.clidriver
  File "/usr/lib/python2.7/dist-packages/awscli/clidriver.py", line 24, in <module>
    from botocore.history import get_global_history_recorder
ImportError: No module named history

我也面临同样的问题。

与@optimisticanshul 相同的问题
aws 版本:awscli-1.14.19
botocore: botocore-1.8.23
蟒蛇:Python 2.7.13

解决方法:

  1. pip uninstall boto3 -y
  2. pip uninstall boto -y
  3. pip uninstall botocore -y
  4. pip install botocore --upgrade

结果aws 有效

我面临类似的问题。 唯一的区别是,当我尝试以 root 用户身份访问它时,出现错误,但是当以 ec2-user 身份访问它时,它工作得很好。

输出为 ec2-user

[ec2-user@ip-x-x-x-x ~]$ aws route53 change-resource-record-sets --hosted-zone-id $PrivateHostedZoneId --change-batch file:///home/ec2-user/change.json
{
    "ChangeInfo": {
        "Status": "PENDING",
        "Comment": "Create route53 DNS entry at instance boot up",
        "SubmittedAt": "2018-01-17T12:30:45.534Z",
        "Id": "/change/C1IG3ETCO6MGVW"
    }
}

以 root 用户输出

[root@ip-x-x-x-x ec2-user]# aws route53 change-resource-record-sets --hosted-zone-id $PrivateHostedZoneId --change-batch file:///home/ec2-user/change.json
Traceback (most recent call last):
  File "/usr/bin/aws", line 19, in <module>
    import awscli.clidriver
  File "/usr/lib/python2.7/dist-packages/awscli/clidriver.py", line 24, in <module>
    from botocore.history import get_global_history_recorder
ImportError: No module named history

aws-cli:1.14.9
蟒蛇:2.7.12
Linux:4.9.76-3.78.amzn1.x86_64
botocore:1.8.13

也看到同样的问题。

Linux:Arch Linux
蟒蛇:3.6.4
aws-cli 1.14.40-1
botocore:1.8.44-1

尝试通过 pip 升级 botocore,目前未成功。

更新:我也尝试过 #641 中提到的sudo pip install awscli --force-reinstall --upgrade ,但这也没有帮助。

使用 Windows 也有同样的问题:

平台:win32
蟒蛇:3.5.2
awscli:1.14.41
botocore:1.8.45

我已经尝试了上面建议的解决方法,卸载并重新安装 awscli 和 botocore,但我仍然收到消息:

  File "C:\python\Python3\Scripts\aws.cmd", line 50, in <module>
    import awscli.clidriver
ImportError: No module named awscli.clidriver

如果您通过 pip 以外的任何机制(例如 linux 包管理器)安装了 CLI,那么您也需要在那里卸载,以确保在重新安装之前清理您的系统。 对于 Windows,我强烈建议使用我们在此处提供的安装程序

在这里相同,但通过升级修复。
失败者

boto (2.48.0)
boto3 (1.4.7)
botocore (1.7.1)
pip install --upgrade boto3
pip install --upgrade botocore
pip install --upgrade awscli

``
aws ecs list-container-instances --cluster my_ecs_cluster
{
“容器实例Arns”:[

...
]
}

大多数当前版本仍然出错:
awscli==1.14.53
boto==2.48.0
boto3==1.6.6
botocore==1.9.6

命令:aws ecr get-login --region $AWS_DEFAULT_REGION
图片:Ubuntu - aws/codebuild/ docker:17.09.0

回溯(最近一次调用最后一次):
文件“/usr/local/bin/aws”,第 19 行,在
导入 awscli.clidriver
文件“/usr/local/lib/python2.7/dist-packages/awscli/clidriver.py”,第 24 行,在
从 botocore.history 导入 get_global_history_recorder
导入错误:没有名为历史的模块

找到了一个可行的解决方案:
awscli==1.11.157
boto3==1.6.7
botocore==1.9.7

看起来已经应用了修复程序,并且更新了 boto3 和 botocore 版本。 无论他们做了什么更新,似乎都解决了这个问题。

看起来无法解析配置文件。 我通过创建一个新的 ~/.aws/config 文件解决了这个问题。

我在用 yum 安装 CentOS 时遇到了同样的问题。 我用 yum 删除了软件包并用 pip 安装了 awscli,现在一切正常。

对于使用 epel 从 centos 7 安装的用户,awscli 已从 epel 中删除并包含在 centos base repo 中。 但是依赖项发生了变化,只需删除以下包(如果没有其他人使用它)

python2-s3transfer python-colorama python2-botocore python2-rsa

然后从 centos-base repo 重新安装

关闭旧问题。 如前所述,该问题是由于 CLI 使用了旧版本的 botocore。 只要您通过 pip 或任何其他受支持的安装方法进行安装,您就会获得 CLI 的工作版本。

删除 botocore 包
pip 卸载 botocore

再次安装 awscli
点安装awscli

现在它对我有用

sudo -H pip install awscli --upgrade

@mariosotil你救了我们!

此页面是否有帮助?
0 / 5 - 0 等级