python - 尝试导入与内置模块同名的模块会导致导入错误

标签 python python-import

我有一个与内置模块冲突的模块。例如,在 myapp/email.py 中定义的 myapp.email 模块。

我可以毫无问题地在我的代码中的任何地方引用 myapp.email。但是,我需要从我的电子邮件模块中引用内置电子邮件模块。

# myapp/email.py
from email import message_from_string

它只会找到自己,因此会引发 ImportError,因为 myapp.email 没有 message_from_string 方法。当我尝试 email.message_from_string 时,import email 会导致同样的问题。

在 Python 中是否有任何本地支持来执行此操作,或者我是否坚持将我的“电子邮件”模块重命名为更具体的名称?

最佳答案

您会想阅读有关 Absolute and Relative Imports 的内容这解决了这个问题。使用:

from __future__ import absolute_import

使用它,任何朴素的包名称将始终引用顶级包。然后您需要使用相对导入(from .email import ...)来访问您自己的包。

注意: 上面的 from ... 行需要放入任何 2.x Python .py 文件中 import ... 您正在使用的行。在 Python 3.x 中,这是默认行为,因此不再需要。

关于python - 尝试导入与内置模块同名的模块会导致导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8055373/

相关文章:

python - 如何使用 webdriver 作为上下文管理器

python - 我怎样才能使用 zip(), python

python - 在 Python 中查找包导入的第一个实例

python - 删除列表中的值,除了 python 中连续整数中的第一个和最后两个元素

Python 配置分析器 : get list of unused entries

python-import - 在导入到 python 解释器时更新模块

python - 简单利用 "import as"加载多场景数据?

python - ImportError:无法导入模块

python - "py.test"与 "pytest"命令

python - 根据另一列减去某个 pandas 数据框列的最小值