首页 > 解决方案 > 使用 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

我的动机是发送带有附件的邮件。如果有人知道此导入异常的修复或其他方式。请告诉我。

标签: pythonpycharmpython-3.6

解决方案


您命名了您的文件random.py,这会导致import random导入/usr/lib/python3.6/email/utils.py您自己的脚本而不是标准的 librandom模块。反过来,您自己的random.py文件导入urllib3显然没有安装在您的解释器上。

切勿使用与标准 lib 内置/模块相同的名称来命名您的脚本/模块。

要修复此错误,您需要:

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

推荐阅读