不同目录下的不同导入结果
问题内容:
我有一个包MyPak和一个模块MyMod。这些文件的组织方式如下:
somedir / MyPak / MyMod.py
在MyMod.py中,只有一个名称也为MyMod的类
在 somedir / MyPak 目录中,如果我执行导入操作:
import MyMod
我将MyMod作为模块导入。
但是在 somedir / 目录中,如果我这样做
from MyPak import MyMod
我将MyMod作为类而不是模块导入。为什么会这样呢?
问题答案:
此行为表明您有一个文件:
somedir/MyPak/__init__.py
其中,您执行以下操作:
from MyMod import *
当您import MyPak
从中导入时,__init__.py
同样地,当您from MyPak import something
尝试从包的名称空间中提取时,它会在其中__init__.py
因为您是从MyMod
inside导入所有内容的__init__.py
,所以现在该类在MyPak
包中是本地的,并屏蔽了MyMod.py
文件。