我有一个包MyPak和一个模块MyMod。文件按以下方式组织:
somedir / MyPak / MyMod.py
在MyMod.py中只有一个名为MyMod的类
目录 somedir / MyPak 中的,如果我执行导入:
import MyMod
我将MyMod作为模块导入。
但是在目录 somedir / 中,如果我这样做
from MyPak import MyMod
我将MyMod作为类导入,而不是模块导入。为什么会这样?
答案 0 :(得分:4)
此行为表示您有一个文件:
somedir/MyPak/__init__.py
其中您执行以下操作:
from MyMod import *
当你import MyPak
时,它会从__init__.py
导入 - 同样,当你from MyPak import something
时,它会尝试从包的名称空间中提取 - 这将在__init__.py
内部查看{ {1}}
由于您从MyMod
内__init__.py
导入了所有内容,现在该类是MyPak
包的本地类,并屏蔽了MyMod.py
文件。