Python模块搜索路径

时间:2010-08-19 16:16:56

标签: python path module

我有一个这样的项目:

foo/
| main.py
| bar/
| | module1.py
| | module2.py
| | __init__.py

main.py import bar.module1module1.py执行import module2

这可以使用python 2.6但不能使用python 3.1(ImportError: No module named module2

为什么行为改变了?如何恢复?

1 个答案:

答案 0 :(得分:6)

在module1.py中,执行:from . import module2

main.py

import bar.module1
print(bar.module1.module2.thing)

酒吧/的初始化的.py

#

酒吧/ module1.py

#import module2 # fails in python31
from . import module2 # intrapackage reference, works in python26 and python31

酒吧/ module2.py

thing = "blah"

至于为什么/如何,这高于我的薪水。文档似乎没有阐明它。也许在Python 3中,他们决定在使用intrapackage样式显式导入的包中强制执行子模块?