首頁 > 後端開發 > Python教學 > 為什麼我在 Python 中收到「ValueError:嘗試相對導入超出頂級套件」錯誤?

為什麼我在 Python 中收到「ValueError:嘗試相對導入超出頂級套件」錯誤?

Linda Hamilton
發布: 2024-11-26 04:48:14
原創
605 人瀏覽過

Why Am I Getting a

相對導入錯誤:超出頂級包

在Python 3 中,相對導入提供了一種便捷的方式來引用同一包中的模組目錄或包。但是,遇到“ValueError:嘗試相對導入超出頂級包”錯誤可能會令人困惑。

考慮以下套件結構:

package/
    __init__.py
    A/
        __init__.py
        foo.py
    test_A/
        __init__.py
        test.py
登入後複製

當嘗試從子套件(例如,from ..A import foo in test.py),如果滿足以下條件,則可能會遇到上述錯誤滿足:

  1. 您正在從套件目錄(package/) 中運行模組(例如,python -m test_A.test),且
  2. 您沒有使用下列指令指定該套件為頂層套件(例如 python -m package.test_A.test)。

原因這個錯誤源自於 Python 導入機制的一個基本面向。當載入包時,它被視為“頂級包”,並且相對導入只能引用該包或其子包內的模組。但是,當直接運行模組時,Python 不會自動將套件的父目錄識別為套件。

因此,在上述場景中,當您從套件目錄中執行python -m test_A.test 時,父目錄目錄('package/') 不被視為包,並且來自..A import foo的相對導入有效地嘗試超越頂級包。

要解決此錯誤,請確保您在執行模組時指定整個套件路徑:

python -m package.test_A.test
登入後複製

以上是為什麼我在 Python 中收到「ValueError:嘗試相對導入超出頂級套件」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板