我有一个这样的项目:
foo/
| main.py
| bar/
| | module1.py
| | module2.py
| | __init__.py
main.py
import bar.module1
和module1.py
执行import module2
。
这可以使用python 2.6但不能使用python 3.1(ImportError: No module named module2
)
为什么行为改变了?如何恢复?
答案 0 :(得分:6)
在module1.py中,执行:from . import module2
import bar.module1
print(bar.module1.module2.thing)
#
#import module2 # fails in python31
from . import module2 # intrapackage reference, works in python26 and python31
thing = "blah"
至于为什么/如何,这高于我的薪水。文档似乎没有阐明它。也许在Python 3中,他们决定在使用intrapackage样式显式导入的包中强制执行子模块?