【发布时间】:2011-04-01 05:32:06
【问题描述】:
我有一个这样的项目:
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)
为什么行为会改变?怎么恢复?
【问题讨论】:
-
你能显示你的 init.py 的内容吗?
-
它是空的。事实上,要重现此行为,您只需将包含 import 语句的 main.py 和 module1.py 以及其他文件清空即可。
-
这似乎是一个奇怪的结构,尽管我不经常将我的模块放入包中;为什么不在
main.py中有您关心的__init__.py导入组件 -
为什么这么奇怪?如果我在 init.py 中添加
import module1,它会以 (ImportError: No module named module1infoo/bar/__init__.py) 结尾 -
这看起来也很奇怪;不过如果你这样做了,我的回答也会治愈它。