Python匯入包時提示“attempted relative import beyond top-level package”的解決辦法

尼古拉-卡什發表於2024-08-17

一篇很好的文章:

python跨目錄導包失敗 python不同路徑匯入包錯誤

在涉及到相對匯入時,package所對應的資料夾必須正確的被python直譯器視作package,而不是普通資料夾。否則由於不被視作package,無法利用package之間的巢狀關係實現python中包的相對匯入。

資料夾被python直譯器視作package需要滿足兩個條件:
  1、資料夾中必須有__init__.py檔案,該檔案可以為空,但必須存在該檔案。
  2、不能作為頂層模組來執行該資料夾中的py檔案(即不能作為主函式的入口)。
  補充:在"from YY import XX"這樣的程式碼中,無論是XX還是YY,只要被python直譯器視作package,就會首先呼叫該package的__init__.py檔案。如果都是package,則呼叫順序是YY,XX。
  另外,練習中“from . import XXX”和“from … import XXX”中的’.‘和’…’,可以等同於linux裡的shell中’.‘和’…'的作用,表示當前工作目錄的package和上一級的package。

相關文章