Python导入boto3错误:无法导入名称ClientError

时间:2017-12-22 13:13:19

标签: python amazon-web-services boto3

我正在尝试使用带有Python的AWS Simple Email Service。我跟着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

3 个答案:

答案 0 :(得分: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"}}

答案 1 :(得分:3)

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

答案 2 :(得分:0)

在 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