[英]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.