我不能为我的生活得到python的相对导入工作.我创建了一个它不起作用的简单示例:
目录结构是:
/__init__.py
/start.py
/parent.py
/sub/__init__.py
/sub/relative.py
Run Code Online (Sandbox Code Playgroud)
/start.py 仅包含: import sub.relative
/sub/relative.py 只包含 from .. import parent
所有其他文件都是空白的.
在命令行上执行以下操作时:
$ cd /
$ python start.py
Run Code Online (Sandbox Code Playgroud)
我明白了:
Traceback (most recent call last):
File "start.py", line 1, in <module>
import sub.relative
File "/home/cvondrick/sandbox/sub/relative.py", line 1, in <module>
from .. import parent
ValueError: Attempted relative import beyond toplevel package
Run Code Online (Sandbox Code Playgroud)
我使用的是Python 2.6.为什么会这样?如何使这个沙盒示例工作?
可以使用在路径中引用两个以上点的模块吗?像这个例子:
# Project structure:
# sound
# __init__.py
# codecs
# __init__.py
# echo
# __init__.py
# nix
# __init__.py
# way1.py
# way2.py
# way2.py source code
from .way1 import echo_way1
from ...codecs import cool_codec
# Do something with echo_way1 and cool_codec.
Run Code Online (Sandbox Code Playgroud)
UPD:更改了示例。我知道,这将在实践中起作用。但这是一种常见的导入方法吗?