首頁  >  文章  >  後端開發  >  如何在 Python 中從子目錄匯入檔案:為什麼需要 `__init__.py`?

如何在 Python 中從子目錄匯入檔案:為什麼需要 `__init__.py`?

Susan Sarandon
Susan Sarandon原創
2024-11-19 18:37:03813瀏覽

How to Import Files from Subdirectories in Python: Why Do I Need `__init__.py`?

從子目錄匯入檔案

在 Python 程式設計領域,有效組織程式碼至關重要。子目錄是維護模組化的一種巧妙方法,但是當從這些子目錄匯入檔案時,您可能會遇到不可預見的障礙。

考慮以下場景:您有一個名為 tester.py 的檔案位於 /專案目錄。 /project 目錄中有一個名為 lib 的子目錄,其中包含另一個名為 BoxTime.py 的檔案。您的目標是將 BoxTime 匯入 tester.py 腳本。

遇到導入錯誤

您的第一種方法是使用以下命令導入BoxTime:

import lib.BoxTime

但是,此嘗試遇到錯誤訊息:

Traceback (most recent call last):
  File "./tester.py", line 3, in <module>
    import lib.BoxTime
ImportError: No module named lib.BoxTime

不過,您正在尋找一種解決方案來橋接主腳本和子目錄中的檔案之間的間隙。

揭開謎底

解決方案位於軟體包文件(第 6.4 節)。根據文檔,Python 要求子目錄中存在一個名為 __init__.py 的空白文件。

在我們的範例中,您需要在 lib 目錄中建立一個空的 __init__.py 檔案。這種微妙的調整可以讓 Python 將子目錄識別為套件,並讓您能夠無縫匯入檔案。

所以,不要忽略 __init__.py 檔案的重要性。它充當看門人,促進從子目錄導入檔案。

其他注意事項

雖然建立空的 __init__.py 檔案解決了最初的問題,但從以下目錄匯入檔案時還需要考慮另一個面向子目錄。 Python 要求您在模組名稱前加上目錄路徑,例如 lib.BoxTime。

或者,您可以使用以下語法為模組指派別名:

import lib.BoxTime as BT

這允許您使用 BT 別名方便地呼叫模組,例如 BT.bt_function()。

遵循這些準則,您將解決您的匯入問題,確保將子目錄中的檔案無縫整合到您的 Python 專案中。

以上是如何在 Python 中從子目錄匯入檔案:為什麼需要 `__init__.py`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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