頂級包之外的相對導入
在多層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 的套件尋找機制來緩解此限制。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3