python - 使用 Python 3.6.9 导入 smtplib 时如何解决错误?
问题描述
我想发送带有附件的邮件,所以首先我尝试使用 python 3.6 和 pycharm IDE 发送邮件。每次运行文件时,我都会遇到以下异常。
Traceback (most recent call last):
File "/home/UDHAV.MOHATA/script/test.py", line 11, in <module>
import smtplib
File "/usr/lib/python3.6/smtplib.py", line 47, in <module>
import email.utils
File "/usr/lib/python3.6/email/utils.py", line 28, in <module>
import random
File "/home/UDHAV.MAHATA/script/random.py", line 1, in <module>
import urllib3
ModuleNotFoundError: No module named 'urllib3'
示例代码:
import smtplib
import ssl
subject = "An email with attachment from Python"
body = "This is an email with attachment sent from Python"
sender_email = "***********"
receiver_email = "***************"
password = "********"
message = """\
Subject: Hi there
This message is sent from Python."""
context = ssl.create_default_context()
with smtplib.SMTP_SSL_PORT("smtp.gmail.com", 465, context=context) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
确切的python版本: 3.6.9
我的动机是发送带有附件的邮件。如果有人知道此导入异常的修复或其他方式。请告诉我。
解决方案
您命名了您的文件random.py
,这会导致import random
导入/usr/lib/python3.6/email/utils.py
您自己的脚本而不是标准的 librandom
模块。反过来,您自己的random.py
文件导入urllib3
显然没有安装在您的解释器上。
切勿使用与标准 lib 内置/模块相同的名称来命名您的脚本/模块。
要修复此错误,您需要:
- 更改您的
random.py
. - 安装,
urllib3
以便您的脚本可以导入它(如果您真的需要它)
推荐阅读
- node.js - 限制在 express 服务器上运行的异步 BigQuery 作业的数量
- docker - Docker 在哪里运行文件?
- java - 为什么 MyBatis 不识别 Arrays.asList()?
- mysql - 如何在 MySql、Cakephp 3.6 中查找多对多关系中的计数
- api - 使用 Microsoft Graph Api v1 创建在线会议/Skype 活动
- java - JavaFX:在窗格内同时移动数百个 ImageView(性能问题)
- java - Spring security - 错误导致性能问题
- python - 用另一个替换括号中的字符
- python - 拟合到 2D 函数的误差估计
- amazon-web-services - 将 Web 应用程序日志文件上传到 S3