Mengimport Modul daripada Pembolehubah Rentetan dengan "__import__"
Apabila cuba mendokumentasikan submodul tertentu dalam perpustakaan matplotlib (MPL), ia mungkin diperlukan untuk mengimport submodul ini daripada rentetan. Walau bagaimanapun, menggunakan fungsi "__import__" boleh menghasilkan hasil yang tidak dijangka berbanding dengan pernyataan import standard.
Masalah:
Mengimport submodul menggunakan "__import__" (cth., __import__( 'matplotlib.text')) tidak memuatkan kandungan submodul sepenuhnya seperti yang diharapkan. Apabila membandingkan senarai atribut yang diperoleh daripada kedua-dua "__import__" dan import biasa, adalah jelas bahawa "__import__" termasuk takrifan asas daripada matplotlib bersama-sama dengan elemen luar tetapi tidak mempunyai kelas penting daripada submodul sasaran.
Penyelesaian:
Untuk memuatkan submodul daripada rentetan menggunakan "__import__", nyatakan senarai kosong sebagai hujah kedua (dari senarai):
import matplotlib.text as text x = dir(text) i = __import__('matplotlib.text', fromlist='') y = dir(i)
Kod yang disemak ini berkesan memuatkan submodul yang dikehendaki, menghasilkan senarai atribut yang dijangkakan.
Sebagai alternatif, dalam Python versi 3.1 atau lebih baru , seseorang boleh menggunakan importlib modul:
import importlib i = importlib.import_module("matplotlib.text") y = dir(i)
Nota:
Atas ialah kandungan terperinci Mengapakah `__import__` Gagal Mengimport Submodul Matplotlib Sepenuhnya dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!