繁体   English   中英

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

[英]Python import boto3 error: cannot import name ClientError

我正在尝试将 AWS Simple Email Service 与 Python 结合使用。 我按照使用适用于 Python 的 AWS 开发工具包 (Boto) 示例代码发送电子邮件 程序无法正确导入 boto3。

当它第一次尝试导入 boto3 时,Python 给出错误ImportError: cannot import name ClientError

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

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

boto3 Version: 1.4.4
botocore Version: 1.5.95

您的 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"}}

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

在 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM