![Python 导入模块错误](https://linux22.com/image/1550572/Python%20%E5%AF%BC%E5%85%A5%E6%A8%A1%E5%9D%97%E9%94%99%E8%AF%AF.png)
我在 Ubuntu 上使用 Python 时遇到问题。似乎无法导入标准包中的某些模块。例如,我尝试导入以下几行:
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders
该代码会产生以下错误:
from email.MIMEMultipart import MIMEMultipart
ImportError: No module named MIMEMultipart
默认情况下,所有软件包都已正确安装,因为我可以通过 shell 访问文件,但不能在执行文件时直接访问:python email.py
答案1
我认为您没有正确指定模块和传入子模块。您实际上应该这样做:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
我使用help
python 的函数检查“PACKAGE CONTENTS”下的电子邮件模块包含什么,并推断出例如它MIMEmultipart
是一个类mime
:
help("email")
help("email.mime.multipart")
编辑:
仅在 Python2 中(python3 似乎不适用于此)找到对象在给定模块中的确切位置的简单方法是:
getattr(__import__("<module_name>"), "<object_name>").__dict__["__name__"]
就你的情况来说,它是这样的:
getattr(__import__("email"), "MIMEMultipart").__dict__["__name__"]
getattr(__import__("email"), "MIMEText").__dict__["__name__"]