處理非包裝上下文中的相對導入
嘗試使用 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中文網其他相關文章!