首頁  >  文章  >  後端開發  >  為什麼使用「python -m」時 Python 從套件目錄進行相對導入失敗?

為什麼使用「python -m」時 Python 從套件目錄進行相對導入失敗?

Linda Hamilton
Linda Hamilton原創
2024-11-24 02:52:08919瀏覽

Why Does Python Fail Relative Imports from a Package Directory When Using `python -m`?

相對導入中超出頂層包錯誤

當從包的子模組執行相對導入時,會發生令人費解的錯誤在包目錄中。具體來說,遇到了錯誤「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中文網其他相關文章!

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