我有一个与内置模块冲突的模块。例如,中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中是否有任何本机支持来执行此操作,还是我将“电子邮件”模块重命名为更具体的名称?
您将需要阅读有关绝对进口和相对进口的文章,该文章解决了这个问题。用:
from __future__ import absolute_import
使用该名称,任何未经修饰的程序包名称将始终引用顶级程序包。然后,您将需要使用相对导入(from .email import ...
)访问您自己的包。
注意:上面的from ...
行需要放在您使用.py
的import ...
行上方的任何2.x Python 文件中。在Python 3.x中,这是默认行为,因此不再需要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句