Wie man prüft, ob ein Modul in Python importiert wurde

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob ein Modul in Python importiert wurde. Das Lab behandelt die Grundlagen des Modulimports, einschließlich der Erstellung und des Imports eines einfachen Moduls. Sie erfahren, wie Sie die import-Anweisung verwenden, um Module in Ihr Programm einzubinden und auf deren Funktionen und Variablen zuzugreifen.

Anschließend wird das sys.modules-Wörterbuch (Dictionary) untersucht, das alle importierten Module in der aktuellen Python-Sitzung speichert. Sie werden auch lernen, wie Sie das importlib-Modul verwenden, um zu überprüfen, ob ein Modul importiert wurde.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ModulesandPackagesGroup -.-> python/creating_modules("Creating Modules") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") subgraph Lab Skills python/importing_modules -.-> lab-559543{{"Wie man prüft, ob ein Modul in Python importiert wurde"}} python/creating_modules -.-> lab-559543{{"Wie man prüft, ob ein Modul in Python importiert wurde"}} python/standard_libraries -.-> lab-559543{{"Wie man prüft, ob ein Modul in Python importiert wurde"}} python/catching_exceptions -.-> lab-559543{{"Wie man prüft, ob ein Modul in Python importiert wurde"}} end

Über Modulimport lernen

In diesem Schritt lernen Sie über den Modulimport in Python. Module sind Dateien, die Python-Definitionen und -Anweisungen enthalten. Die import-Anweisung wird verwendet, um Module in Ihr aktuelles Programm einzubinden, sodass Sie die darin definierten Funktionen und Variablen nutzen können.

Zunächst erstellen wir ein einfaches Modul. Öffnen Sie den VS Code-Editor in der LabEx-Umgebung und erstellen Sie eine neue Datei namens my_module.py im Verzeichnis ~/project.

## ~/project/my_module.py
def greet(name):
    return f"Hello, {name}!"

PI = 3.14159

Dieses Modul definiert eine Funktion greet und eine Variable PI. Jetzt erstellen wir eine weitere Python-Datei, um dieses Modul zu importieren und zu verwenden. Erstellen Sie eine neue Datei namens main.py im Verzeichnis ~/project.

## ~/project/main.py
import my_module

name = "LabEx User"
greeting = my_module.greet(name)
print(greeting)
print("PI =", my_module.PI)

In dieser main.py-Datei verwenden wir die Anweisung import my_module, um das zuvor erstellte my_module einzubinden. Anschließend greifen wir auf die Funktion greet und die Variable PI über die Punktnotation (my_module.greet, my_module.PI) zu.

Um diesen Code auszuführen, öffnen Sie ein Terminal in der LabEx-Umgebung (es sollte bereits im unteren Bereich von VS Code geöffnet sein). Stellen Sie sicher, dass Ihr aktuelles Verzeichnis ~/project ist. Wenn nicht, navigieren Sie dorthin mit dem cd-Befehl:

cd ~/project

Jetzt führen Sie das Skript main.py mit dem python-Befehl aus:

python main.py

Sie sollten die folgende Ausgabe sehen:

Hello, LabEx User!
PI = 3.14159

Dies zeigt, wie man ein Modul importiert und seinen Inhalt in einer anderen Python-Datei verwendet.

Überprüfen des sys.modules-Wörterbuchs (Dictionary)

In diesem Schritt werden Sie das sys.modules-Wörterbuch (Dictionary) untersuchen, das ein wesentlicher Bestandteil von Pythons Modulimportsystem ist. sys.modules ist ein Wörterbuch, das alle Module enthält, die in die aktuelle Python-Sitzung importiert wurden. Das Verständnis dieses Wörterbuchs kann Ihnen helfen, wie Python Module verwaltet.

Um zu beginnen, erstellen wir ein Python-Skript namens check_modules.py im Verzeichnis ~/project. Dieses Skript wird das sys-Modul importieren und die Schlüssel des sys.modules-Wörterbuchs ausgeben.

## ~/project/check_modules.py
import sys

print("Modules currently in sys.modules:")
for module_name in sys.modules.keys():
    print(module_name)

import my_module

print("\nModules after importing my_module:")
for module_name in sys.modules.keys():
    print(module_name)

Dieses Skript importiert zunächst das sys-Modul. Dann durchläuft es die Schlüssel des sys.modules-Wörterbuchs und gibt jeden Modulnamen aus. Danach importiert es das my_module, das im vorherigen Schritt erstellt wurde, und gibt das sys.modules-Wörterbuch erneut aus, um das neu importierte Modul anzuzeigen.

Jetzt führen Sie das Skript mit dem python-Befehl im Terminal aus:

cd ~/project
python check_modules.py

Sie werden eine Liste von Modulen sehen, die bereits geladen sind, wenn der Python-Interpreter startet, gefolgt von derselben Liste mit my_module hinzugefügt, nachdem die import my_module-Anweisung ausgeführt wurde. Die Ausgabe wird in etwa so aussehen (die genaue Liste der Module kann variieren):

Modules currently in sys.modules:
builtins
sys
_frozen_importlib
_imp
_warnings
_io
... (many more modules)

Modules after importing my_module:
builtins
sys
_frozen_importlib
_imp
_warnings
_io
... (many more modules)
my_module

Beachten Sie, dass my_module nach der import-Anweisung dem sys.modules-Wörterbuch hinzugefügt wird. Dieses Wörterbuch fungiert als Cache, sodass, wenn Sie versuchen, dasselbe Modul erneut zu importieren, Python es einfach aus sys.modules abruft, anstatt es erneut von der Festplatte zu laden. Diese Optimierung verbessert die Leistung.

Verwendung von importlib zur Überprüfung

In diesem Schritt lernen Sie, wie Sie das importlib-Modul verwenden, um Module programmgesteuert zu importieren und ihre Existenz zu überprüfen. importlib ist Teil der Python-Standardbibliothek und bietet eine Möglichkeit, mit dem Importsystem zu interagieren.

Erstellen wir ein Python-Skript namens verify_import.py im Verzeichnis ~/project. Dieses Skript wird importlib nutzen, um my_module zu importieren und zu prüfen, ob der Import erfolgreich war.

## ~/project/verify_import.py
import importlib

module_name = "my_module"

try:
    module = importlib.import_module(module_name)
    print(f"Module '{module_name}' imported successfully.")
    print(f"Greeting: {module.greet('LabEx')}")
except ImportError:
    print(f"Failed to import module '{module_name}'.")

In diesem Skript verwenden wir importlib.import_module(), um my_module zu importieren. Wenn das Modul gefunden und erfolgreich importiert wird, gibt das Skript eine Erfolgsmeldung aus und ruft die greet-Funktion aus dem Modul auf. Wenn das Modul nicht gefunden wird, wird ein ImportError ausgelöst, und das Skript gibt eine Fehlermeldung aus.

Jetzt führen Sie das Skript mit dem python-Befehl im Terminal aus:

cd ~/project
python verify_import.py

Sie sollten die folgende Ausgabe sehen:

Module 'my_module' imported successfully.
Greeting: Hello, LabEx!

Wenn Sie module_name in ein nicht existierendes Modul ändern würden, wie z. B. "nonexistent_module", und das Skript erneut ausführen würden, würden Sie sehen:

Failed to import module 'nonexistent_module'.

Dies zeigt, wie man importlib verwendet, um Module dynamisch zu importieren und potenzielle Importfehler zu behandeln. Dies ist besonders nützlich in Situationen, in denen Sie Module basierend auf Benutzereingaben oder Konfigurationsdateien laden müssen.

Zusammenfassung

In diesem Lab haben Sie sich mit dem Importieren von Modulen in Python vertraut gemacht. Sie haben ein Modul namens my_module.py erstellt, das eine Funktion greet und eine Variable PI enthält. Anschließend haben Sie main.py erstellt, um my_module zu importieren und dessen Inhalte zu nutzen. Dies zeigt, wie die import-Anweisung Module in Ihr Programm einbindet und wie Sie mithilfe der Punktnotation auf Funktionen und Variablen innerhalb dieser Module zugreifen können.

Sie haben auch begonnen, das sys.modules-Wörterbuch (Dictionary) zu untersuchen, das alle Module enthält, die in die aktuelle Python-Sitzung importiert wurden. Dies ist ein wesentlicher Bestandteil von Pythons Modulimportsystem.