首頁 >後端開發 >Python教學 >如何在 Python 套件中成功執行相對導入?

如何在 Python 套件中成功執行相對導入?

Patricia Arquette
Patricia Arquette原創
2024-12-16 18:00:33786瀏覽

How Can I Successfully Perform Relative Imports in Python Packages?

Python 中的相對導入

在 Python 中,從包內導入模組可能是一項棘手的任務。考慮以下目錄結構:

app/
   __init__.py
   sub1/
      __init__.py
      mod1.py
   sub2/
      __init__.py
      mod2.py

假設您正在處理 mod1.py 並需要從 mod2.py 匯入某些內容。您可以嘗試:

from ..sub2 import mod2

但是,這會導致「嘗試在非套件中進行相對導入」錯誤。解決方案在於,Python 將作為 __main__ 運行的模組(例如 python mod1.py)解釋為頂級模組,無論其檔案系統位置如何。

要啟用相對導入,導入模組不得以 __main__ 運作。這可以透過以套件作為主模組來執行解釋器來完成:

python -m app.sub1.mod1

或者,您可以使用__package__ 屬性手動指定父包:

import sys
sys.path.insert(0, '..')
from sub2.mod2 import MyClass

這方法作業系統路徑,但它不需要將模組作為__main__ 運行。

但是,對於要在其中工作的相對導入子包中,確保每個目錄中存在 __init__.py 檔案非常重要。這些檔案充當套件標記,並使 __package__ 屬性能夠引用包含的套件。

以上是如何在 Python 套件中成功執行相對導入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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