Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah `__import__` Gagal Mengimport Submodul Sepenuhnya dalam Python, dan Bagaimana Saya Boleh Membetulkannya?

Mengapakah `__import__` Gagal Mengimport Submodul Sepenuhnya dalam Python, dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Susan Sarandonasal
2024-12-03 03:37:09948semak imbas

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

Memahami Fungsi import untuk Pemuatan Submodul

Dalam Python, pengimportan modul memainkan peranan penting dalam mengatur dan menggunakan semula kod. Walau bagaimanapun, apabila cuba mengimport submodul daripada pembolehubah rentetan menggunakan fungsi import, hasil yang membingungkan mungkin timbul.

Masalah:

Pertimbangkan kod berikut:

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

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

j = __import__('matplotlib')
z = dir(j)

Membandingkan tiga senarai x, y dan z yang didedahkan perbezaan yang tidak dijangka. Khususnya, senarai y kekurangan maklumat tentang kelas utama daripada submodul matplotlib.text, yang terdapat dalam senarai x.

Penyelesaian:

import fungsi memerlukan pemahaman yang teliti. Dengan menambahkan hujah rentetan kosong pada parameter fromlist, kami boleh menentukan bahawa kami ingin mengimport submodul itu sendiri:

i = __import__('matplotlib.text', fromlist=[''])

Sekarang, pembolehubah i akan merujuk submodul matplotlib.text dan senarai y akan mengandungi maklumat yang dikehendaki.

Sebagai alternatif, bermula daripada Python 3.1, kita boleh menggunakan importlib pakej:

import importlib

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

Nota Tambahan:

  • Apabila mengimport fail daripada sub-folder, gunakan sintaks berikut: importlib.import_module("feature.email ")
  • Dalam versi Python sebelum 3.3, mengimport daripada sub-folder tanpa Fail __init__.py tidak boleh dilakukan.

Atas ialah kandungan terperinci Mengapakah `__import__` Gagal Mengimport Submodul Sepenuhnya dalam Python, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn