【发布时间】:2011-05-18 17:40:12
【问题描述】:
以下面的代码为例:
文件package1/__init__.py:
from moduleB import foo
print moduleB.__name__
文件package1/moduleB.py:
def foo(): pass
然后从当前目录:
>>> import package1
package1.moduleB
此代码在 CPython 中工作。令我惊讶的是__init__.py 语句中的from ... import 使moduleB 名称可见。根据Python documentation,不应该是这样的:
from表单不绑定模块名
有人能解释一下为什么 CPython 会这样工作吗?是否有任何文档详细描述了这一点?
【问题讨论】:
-
你确定之前没有
import moduleB吗? -
是的,我确定。这是可以重现情况的完整文件。
-
我试过了,它适用于 Python2.7 但不适用于 Python3.2 ...
-
@JBernardo 在 Python 3 下使用
from .moduleB import foo可以得到同样的效果。
标签: python python-import