1. 程式人生 > >模組的相對匯入

模組的相對匯入

先引入一個頂層包(top-level package)的概念

testIm/

  --main.py  : import a.b.c

  --a/

    --k.py : print("I'm top level")

  --b/

    --c.py : from .. import k         from . import f

    --f.py  : print ('f')

 

以上層級,其中main.py定為主執行函式,則主執行函式所在目錄的子目錄,為最頂層,相對匯入,不管是from ..(兩個點) 還是from .(一個點),..(兩個點)和.(一個點)所對應的目錄均不能超過這個頂層目錄,在本例中,c.py中使用了相對匯入,其..(兩個點)對應a目錄,剛好沒超過,而.(一個點)對應b目錄,更沒超過

 

如果c.py做為主執行函式,那麼..和.均早已超過頂層目錄了

 

同理,如果把main.py挪到a目錄中,並且將import a.b.c改為import b.c,再次執行main.py,同樣是程式碼執行到from ..import k,就報相同的錯誤了,英文原文是attempted relative import beyond top-level package