Normalerweise sehe ich dieses Muster mindestens einmal in jedem Python-Projekt, an dem ich arbeite. In einem Django-Projekt wird dies beispielsweise häufig am Ende der Basiseinstellungsdatei hinzugefügt:
try:
from .local_settings import *
except ImportError:
pass
Ebenfalls:
try:
import simplejson as json
except ImportError:
import json
Das hat mich aber immer ein bisschen gestört; Was ist, wenn das Modul erfolgreich importiert wurde, aber dann ein Selbst auslöst ImportError
? Im ersten Beispiel ist das local_settings
Modul beispielsweise vorhanden, local_settings
versucht dann jedoch , ein nicht vorhandenes Modul zu importieren.
Ist dies der sicherste Weg, ein optionales Modul zu importieren, gibt es einen besseren Weg, um diese Funktionalität zu erreichen, oder hängt es vom Kontext / der Verwendung ab (und wenn ja, welche Richtlinien gelten für die Entscheidung, wann dieser Ansatz verwendet werden soll)?