使用 Python 3.6.9 导入 smtplib 时如何解决错误?

How to resolve the error while importing smtplib using Python 3.6.9?

我想发送带附件的邮件,所以首先我尝试使用 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,这会导致 /usr/lib/python3.6/email/utils.py 中的 import random 导入您自己的脚本而不是标准库 random 模块。反过来,您自己的 random.py 文件导入 urllib3,这显然没有安装在您的解释器上。

切勿将您的 script/module 命名为与标准库 built-in/module 相同的名称。

要修复此错误,您需要:

  • 更改您的 random.py的名称。
  • 安装 urllib3 以便您的脚本可以导入它(如果您真的需要它)