我遇到了这个令人困惑的问题:
\dir0
\dir1 #package
__init__.py
\dir2 #sub-package
__init__.py
module.py
当我使用以下语句时:
from dir1 import dir2
然后:
from dir2 import module
它不起作用,但是
from dir1.dir2 import module
作品!
问:由于
dir2
只是初始化为from __init__ file
的名称空间(模块对象),怎么可能? 最佳答案
from dir2
不在当前模块中查看本地名称,它仅查看sys.path
搜索路径上的目录。
换句话说,在这里导入dir2
都没关系,因为模块的全局名称空间对可以导入的内容没有影响。
不以.
开头的导入的Python 2规则如下:
在当前软件包中查找名称。如果当前模块是初始脚本或交互式解释器,则没有当前软件包。
依次查看sys.path
中命名的每个目录。
如果使用的是from __future__ import absolute_imports
,则将第一个选项完全删除,仅使用第二个位置。
关于python - 为什么使用:从子包中导入项目语句不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27930194/