首頁 >後端開發 >Python教學 >為什麼 `__import__` 無法完全導入 Matplotlib 子模組,如何修復?

為什麼 `__import__` 無法完全導入 Matplotlib 子模組,如何修復?

Susan Sarandon
Susan Sarandon原創
2024-12-08 06:58:11866瀏覽

Why Does `__import__` Fail to Fully Import Matplotlib Submodules, and How Can I Fix It?

使用「__import__」從字串變數匯入模組

嘗試記錄matplotlib (MPL) 庫中的特定子模組時,可能會出現以下情況:有必要從字串導入這些子模組。然而,與標準導入語句相比,使用「__import__」函數可能會產生意想不到的結果。

問題:

使用「__import__」導入子模組(例如, __import__( 'matplotlib.text')) 未完全載入子模組的內容。透過比較從「__import__」和常規導入獲得的屬性列表,很明顯「__import__」包含來自 matplotlib 的基本定義以及無關元素,但缺少目標子模組中的關鍵類別。

解決方案:

要使用「__import__」從字串載入子模組,請指定一個空列表為第二個參數(fromlist):

import matplotlib.text as text
x = dir(text)

i = __import__('matplotlib.text', fromlist='')
y = dir(i)

此修改後的程式碼有效地載入所需的子模組,產生預期的屬性清單。

或者,在Python 版本3.1 或更高版本中,可以使用importlib module:

import importlib

i = importlib.import_module("matplotlib.text")
y = dir(i)

註解:

  • 對於涉及子資料夾的匯入(例如./feature/email.py),請使用importlib.import_module ("feature.email")。
  • 在 3.3 之前的 Python 版本中,匯入檔案的資料夾中需要 __init__.py 檔案。不過,3.3之後,這個要求就被刪除了。

以上是為什麼 `__import__` 無法完全導入 Matplotlib 子模組,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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