Python 相對導入錯誤:排除「嘗試在頂層套件之外進行相對導入」
在Python 中,相對導入允許您引用模組在相對於目前目錄的包內。但是,嘗試超出頂級包的相對導入可能會導致錯誤“ValueError:嘗試超出頂級包的相對導入。”
請考慮以下包結構:
package/ __init__.py A/ __init__.py foo.py test_A/ __init__.py test.py
使用python -m test_A.test 在套件目錄中執行test.py 時,遇到上述錯誤。原因是 Python 不保留 test_A.test 所在頂層套件的資訊。
當使用 from ..A import foo 時,Python 會嘗試存取與載入位置同等級的目錄。但是,在這種情況下,不存在同級目錄的概念,因為 package 不被識別為套件。
相反,執行 python -m package.test_A.test 可以正確解析相對導入,因為 Python 可以識別套件作為頂級套件並導航其子目錄 test_A。
但是,Python 無法將目前工作目錄識別為套件仍然是一個謎。儘管它很實用,但在嘗試從頂級目錄進行相對導入時,這種疏忽可能會導致錯誤。
以上是如何解決Python的「嘗試超出頂級套件的相對導入」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!