首頁  >  文章  >  後端開發  >  為什麼 Python 會拋出「ValueError:嘗試相對導入超出頂級套件」錯誤,以及如何避免?

為什麼 Python 會拋出「ValueError:嘗試相對導入超出頂級套件」錯誤,以及如何避免?

Barbara Streisand
Barbara Streisand原創
2024-11-21 09:24:11355瀏覽

Why Does Python Throw a

頂級套件之外的相對導入

在多層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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn