首頁 >後端開發 >Python教學 >如何處理 Python 套件外部的相對導入?

如何處理 Python 套件外部的相對導入?

Linda Hamilton
Linda Hamilton原創
2024-12-12 22:24:17893瀏覽

How to Handle Relative Imports Outside of Python Packages?

處理非包裝上下文中的相對導入

嘗試使用 Python外部目錄結構中的相對路徑導入模組時包裹,如:

pkg/
  __init__.py
  components/
    core.py
    __init__.py
  tests/
    core_test.py
    __init__.py

您可能會遇到錯誤:

ValueError: Attempted relative import in non-package

了解Python 導入機制

Python 導入機制依賴目前檔案的name屬性來決定要導入的適當模組。直接執行檔案時,它會被指派「__main__」的名稱,因此無法進行相對匯入。

可能的解決方案

解決此問題問題,您可以使用以下方法之一:

1.使用-m 選項

您可以使用-m 選項執行該文件,這會將文件作為模組添加到sys.path:

python -m pkg.tests.core_test

2 。指定 package 屬性

如果您的套件的一部分專門設計為作為腳本運行,則可以分配 package屬性來指定其包中所需的名稱

import sys

if __name__ == "__main__":
    sys.__package__ = "pkg.tests"

    from ..components.core import GameLoopEvents

參考:

更多信息,請參閱PEP 366:https://www.python. org/dev/peps/pep -0366/

以上是如何處理 Python 套件外部的相對導入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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