頂級套件之外的相對導入
在多層Python 套件中嘗試相對導入時,從套件目錄運行模組可能會導致“ValueError:嘗試相對導入超出頂級包”錯誤。了解此錯誤背後的原因對於有效的套件管理至關重要。
發生該錯誤是因為 Python 不維護套件載入位置的記錄。以「python -m test_A.test」執行模組本質上是通知 Python test_A.test 不在套件內(儘管它駐留在 package/test_A 中)。因此,嘗試「from ..A import foo」變得無效,因為 Python 不知道 test_A 是較大套件的一部分。
相反,使用「python -m package.test_A.test」保留了層次結構並允許「from ..A import foo」成功解析。它準確地反映了 test_A 是載入的套件“package”中的子目錄這一事實。
Python 不將目前工作目錄視為套件的根本原因尚不清楚。但是,可以透過使用「__init__.py」檔案明確將目錄宣告為套件並在匯入模組時遵循 Python 的套件尋找機制來緩解此限制。
以上是為什麼 Python 會拋出「ValueError:嘗試相對導入超出頂級套件」錯誤,以及如何避免?的詳細內容。更多資訊請關注PHP中文網其他相關文章!