Heim >Backend-Entwicklung >Python-Tutorial >Warum kann „__import__' Submodule in Python nicht vollständig importieren und wie kann ich das beheben?

Warum kann „__import__' Submodule in Python nicht vollständig importieren und wie kann ich das beheben?

Susan Sarandon
Susan SarandonOriginal
2024-12-03 03:37:09948Durchsuche

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

Verstehen der Funktion import zum Laden von Submodulen

In Python spielt das Importieren von Modulen eine entscheidende Rolle bei der Organisation und Wiederverwendung von Code. Wenn Sie jedoch versuchen, ein Submodul aus einer String-Variablen mithilfe der Funktion import zu importieren, können rätselhafte Ergebnisse auftreten.

Problem:

Bedenken Sie Folgendes Folgender Code:

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

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

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

Der Vergleich der drei Listen x, y und z zeigt unerwartete Unterschiede. Insbesondere fehlen in Liste y Informationen zu den Hauptklassen aus dem Untermodul matplotlib.text, das in Liste x vorhanden ist.

Lösung:

Der ImportFunktion erfordert sorgfältiges Verständnis. Durch Hinzufügen eines leeren String-Arguments zum fromlist-Parameter können wir angeben, dass wir das Submodul selbst importieren möchten:

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

Jetzt verweist die Variable i auf das matplotlib.text-Submodul und list y enthält das gewünschte Informationen.

Alternativ können wir ab Python 3.1 die importlib verwenden Paket:

import importlib

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

Zusätzliche Hinweise:

  • Verwenden Sie beim Importieren von Dateien aus Unterordnern die folgende Syntax: importlib.import_module("feature.email ")
  • In Python-Versionen vor 3.3 Import aus Unterordnern ohne __init__.py-Datei war nicht möglich.

Das obige ist der detaillierte Inhalt vonWarum kann „__import__' Submodule in Python nicht vollständig importieren und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn