我正在尝试使用带有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
答案 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