尝试导入与内置模块同名的模块会导致导入错误
- 2025-03-10 08:50:00
- admin 原创
- 42
问题描述:
我有一个与内置模块冲突的模块。例如,myapp.email
在 中定义的模块myapp/email.py
。
我可以myapp.email
在代码中的任何位置引用,没有任何问题。但是,我需要从电子邮件模块引用内置电子邮件模块。
# myapp/email.py
from email import message_from_string
它只能发现自己,因此引发了一个ImportError
,因为myapp.email
没有message_from_string
方法。 import email
当我尝试时会导致同样的问题email.message_from_string
。
Python 中是否有任何本机支持来执行此操作,或者我是否坚持将“电子邮件”模块重命名为更具体的名称?
解决方案 1:
您将需要阅读有关解决此问题的绝对和相对导入。使用:
from __future__ import absolute_import
使用它,任何未修饰的包名称将始终引用顶级包。然后您需要使用相对导入(from .email import ...
)来访问您自己的包。
注意:上述from ...
行需要放在您正在使用的任何 2.x Python.py
文件中import ...
。在 Python 3.x 中,这是默认行为,因此不再需要。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD