不同目录的不同导入结果

时间:2011-08-04 17:06:54

标签: python

我有一个包MyPak和一个模块MyMod。文件按以下方式组织:

  

somedir / MyPak / MyMod.py

在MyMod.py中只有一个名为MyMod的类

目录 somedir / MyPak 中的

,如果我执行导入:

import MyMod

我将MyMod作为模块导入。

但是在目录 somedir / 中,如果我这样做

from MyPak import MyMod

我将MyMod作为类导入,而不是模块导入。为什么会这样?

1 个答案:

答案 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文件。