对于这个目录层次结构:
.
├── hello
│ ├── __init__.py
│ └── world
│ └── __init__.py
└── test.py
而且,Python源文件:
test.py:
if __name__ == '__main__':
import hello
你好/__init__.py:
import world
你好/世界/__init__.py:
print("yes you win")
使用Python 3.4运行test.py时,会抛出ImportError
错误,提示找不到模块world
,但使用Python 2.7则一切正常。
我知道在搜索导入的模块时会引用sys.path
,所以将目录hello
添加到sys.path
中可以消除这个错误。
但在Python 2.7中,在导入world
之前,目录hello
也不在sys.path
中。是什么原因导致了这种差异?在Python 2.7中是否应用了递归搜索策略?