【问题标题】:Python import boto3 error: cannot import name ClientErrorPython导入boto3错误:无法导入名称ClientError
【发布时间】:2018-06-05 03:29:53
【问题描述】:

我正在尝试将 AWS 简单电子邮件服务与 Python 结合使用。我关注了Send an Email Using the AWS SDK for Python (Boto) sample code。程序无法正确导入boto3。

第一次尝试导入boto3时,Python报错ImportError: cannot import name ClientError

如果我再次尝试导入,错误变为ImportError: cannot import name certs

我还检查了安装的 boto3 版本,它与示例代码的版本相同。

boto3 Version: 1.4.4
botocore Version: 1.5.95

【问题讨论】:

标签: python amazon-web-services boto3


【解决方案1】:

在 Ubuntu 20.04 上。 我遇到了同样的问题,大多数建议都没有用。

最终通过运行解决(不是,不是sudo,安装为--user,因为apt与pip不兼容)

#
# Upgrade all 3 packages together, using a more explicit version of python
#
python3.7 -m pip install --upgrade boto3 botocore awscli

【讨论】:

    【解决方案2】:

    最后,这个问题与名称阴影有关。 Botocore 实际上有一个名为 email 的模块,我将我的文件命名为 email.py。因此,botocore 无法正确导入电子邮件模块。

    【讨论】:

      【解决方案3】:

      您的 boto3 和 botocore 版本已经过时了。首先安装更新版本。我还会更新您安装的 AWS CLI 版本。

      pip install boto3 --upgrade
      pip install awscli --upgrade
      

      [评论后更新]

      更新后,在执行“aws --version”时仔细检查是否至少有以下版本:

      aws-cli/1.14.2 Python/2.7.9 Windows/8 botocore/1.8.6

      接下来尝试从 CLI 发送电子邮件。以下是 Windows CMD 提示的脚本。使用经过 SES 验证的有效电子邮件地址进行修改。稍作修改的相同命令将在 Linux 上运行。

      set FROM=from@mydomain.com
      set TO=to@mydomain.com
      aws ses send-email --from %FROM% --destination ToAddresses=%TO% --message Subject={Data="Hello world
      "},Body={Text={Data="Hello World"}}
      

      【讨论】:

      • 我已尝试将它们升级到最新版本,但仍然出现相同的错误。
      • 我已通过更多步骤修改了我的答案以帮助调试您的问题。
      • 我已验证示例代码在当前的 boto3 版本 (1.4.8) 以及 Python 2.7.13 和 Python 3.6.1 上都能正常工作。如果你仍然有问题,那么你安装的 boto3 是无效的。我会删除它并重新安装。还要确保 Python 系统和库的其余部分是最新的。
      • 谢谢! AWS CLI 运行良好,但 Python 仍然出错。我还检查了您提到的库。它们都是更新版本。我想可能是因为我的 boto3 安装无效。你如何检查它是否安装良好?我只是使用 pip install boto3。
      • 什么版本的 Python?只需删除 boto3 并重新安装。有很多好的文档。启动 Google 并做一些功课。
      猜你喜欢
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      • 2017-08-11
      • 2021-02-19
      相关资源
      最近更新 更多