首頁 > 後端開發 > Python教學 > 在 Python 3 中使用相對導入時,為什麼我會收到「ModuleNotFoundError:沒有名為 x 的模組」?

在 Python 3 中使用相對導入時,為什麼我會收到「ModuleNotFoundError:沒有名為 x 的模組」?

Linda Hamilton
發布: 2024-10-28 02:53:02
原創
851 人瀏覽過

 Why am I getting

相對導入和ModuleNotFoundError:沒有名為x 的模組

嘗試在Python 3 中利用相對導入時,程式設計師偶爾會遇到「ModuleNotFoundError:沒有名為x 的模組」錯誤。此錯誤表示解釋器在運行時無法找到具有該特定名稱的模組。

要理解此問題,區分絕對導入和相對導入至關重要。絕對導入用於導入 sys.path 上可用的模組,而相對導入用於導入相對於當前模組的模組。然而,相對導入需要當前模組屬於一個套件。

提供的程式碼片段由兩個檔案組成:test.py 和 config.py。 config.py 包含函數和變量,而 test.py 導入配置並存取其“debug”參數。儘管有 __init__.py 文件,但仍會出現「ModuleNotFoundError: No module named 'config'」錯誤。

此錯誤源自於正在執行的檔案 (test.py) 未包含在一個套件結構中。因此,它無法執行相對導入。使用絕對導入可以解決這個問題,如下面修改後的程式碼片段所示:

<code class="python"># test.py
import ryan.config  # Replace config with ryan.config for absolute import
print(ryan.config.debug)</code>
登入後複製

或者,建立一個套件結構並將 test.py 放置在其中將允許相對導入。目錄結構可能如下所示:

.
├── __init__.py
└── ryan
    ├── __init__.py
    ├── config.py
    └── test.py
登入後複製

總之,僅噹噹前模組屬於包時才允許相對導入。如果正在執行的檔案缺少套件結構,則應使用絕對導入以避免「ModuleNotFoundError」異常。

以上是在 Python 3 中使用相對導入時,為什麼我會收到「ModuleNotFoundError:沒有名為 x 的模組」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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