我不能爲我的生活得到python的相對進口工作。我已經創造了它不起作用一個簡單的例子:任何人都可以解釋python的相對導入嗎?
目錄結構:
/__init__.py
/start.py
/parent.py
/sub/__init__.py
/sub/relative.py
/start.py
只包含:import sub.relative
/sub/relative.py
只包含from .. import parent
所有其他文件都是空白。
在執行命令行中執行以下操作:
$ cd/
$ python start.py
我得到:
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
我使用Python 2.6。爲什麼會這樣?我如何使這個沙箱的例子工作?
您在混淆術語'模塊'和'包'。 'start.py'表示模塊'start','mod'和'mod.sub'是包,'mod'是一個頂層包。 – 2009-12-16 23:45:37
謝謝,但這真的看起來真的很愚蠢。對於這樣一種美麗的語言,我不敢相信設計師會創造這樣的限制。沒有其他方法嗎? – carl 2009-12-16 23:48:16
這並不愚蠢。相對導入是指包中的兄弟模塊的意思。如果要導入頂層模塊,請使用絕對導入。 – 2009-12-17 15:30:08