为什么__init__.py中的相对导入也将模块绑定到其名称?

时间:2019-06-22 01:23:21

标签: python python-import

假设我具有以下目录结构:

x/a.py

包含内容:

__all__ = ['x']
x = 2

x/__init__.py 内容

from .a import x
print(a)

现在,import x打印了

<module 'x.a' from '/home/neil/src/cmm/x/a.py'>

为什么a受到约束?我以为我只是导入,因此绑定了x。我知道我是否import a做过,但是相对导入为什么要导入什么,除了要求什么?

其他文件中的相对导入似乎没有发生。 __init__为什么特别?

这是一个问题,因为mypy到处抱怨着类似的错误

session/__init__.py:12: error: Name 'extrema' already defined (by an import)

0 个答案:

没有答案