在网上阅读了很多内容后,我仍然感到困惑,为什么相对导入在python2.7中不起作用?
我正在阅读python cookbook的Importing Package Submodules Using Relative Names
章节并执行与此处描述的完全相同的目录:
mypackage/
__init__.py
A/
__init__.py
spam.py
grok.py
B/
__init__.py
bar.py
在from . import grok
内mypackage/A/spam.py
。从A / still中运行python spam.py
会给出名人:
Traceback (most recent call last):
File "spam.py", line 1, in <module>
from . import grok
ValueError: Attempted relative import in non-package
为什么不起作用?
修改
如果mypackage.main.py
文件包含此行from A import spam
并运行main.py,则相对导入有效,但将from ..B import bar
行添加到运行main.py的mypackage/A/spam.py
会产生相同的效果错误。