相對導入中超出頂層包錯誤
當從包的子模組執行相對導入時,會發生令人費解的錯誤在包目錄中。具體來說,遇到了錯誤「ValueError:嘗試相對導入超出頂級包」。
此錯誤源自於 Python 的特殊行為,即不記錄載入套件的位置。因此,當使用 python -m package_name.module_name 運行模組時,目前工作目錄不被視為套件。
因此,像 from ..A import foo 這樣的相對導入嘗試,旨在存取模組在同級目錄中,會導致錯誤訊息。這是因為 Python 缺乏對同級目錄的必要引用。
相反,使用 python -m package_name.package_submodule.module_name 運行模組可以成功解析 from ..A import foo 導入語句。在這種情況下,Python 保留了父目錄的訊息,這使得存取同級目錄成為可能。
目前還不清楚為什麼 Python 不將當前工作目錄視為一個包,儘管它很實用。從套件目錄執行相對匯入時,此限制可能會導致混亂和意外錯誤。
以上是為什麼使用「python -m」時 Python 從套件目錄進行相對導入失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!