Python 3 中的相對導入:理解與解決方法
相對導入,通常用於在同一目錄中導入模組,有時會導致錯誤,例如ImportError 或ModuleNotFoundError。了解根本原因對於解決這些問題至關重要。
Python 3 中的相對導入行為
在 Python 3 中,相對導入僅在模組導入其他模組時才起作用位於同一個包內。包是包含 __init__.py 檔案的目錄,指示其包狀態。如果套件中包含帶有其他模組的子目錄,從這些子目錄到其他子目錄中的模組的相對導入將會失敗。
根包包含
要解決此問題,請確保所涉及模組的父目錄是一個包,由 __init__.py 文件的存在表明。如果父目錄不是包,則相對導入將失敗,並顯示錯誤「嘗試在沒有已知父包的情況下進行相對導入。」
錯誤:"ModuleNotFoundError:沒有名為'mymodule ' 的模組”
當指定路徑中不存在正在導入的模組(本例中為mymodule)時,會發生此錯誤。驗證模組是否存在且命名正確。
錯誤:「SystemError: 父模組 '' 未加載,無法執行相對導入」
此錯誤表明父模組(包含相對導入的模組)尚未加載。在嘗試相對導入之前,請確保父模組正在執行或導入。
相對導入的解決方法
如果避免相對導入不可行,可以使用以下解決方法:
關於在套件中執行腳本的警告
Guido van Rossum,的創建者Python 認為在套件中運行腳本是一種反模式,並將其視為不必要的。不過,對於有必要的場景,可以採用上述解決方法。
以上是為什麼我的 Python 3 相對導入失敗,如何修復它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!