Ich habe ein kleines Skript geschrieben. Es soll das Python-Verzeichnis nach allen verfügbaren Modulen durchsuchen (unabhängig davon, ob sie installiert sind oder nicht), dann soll es prüfen, welche Module derzeit geladen sind, und dann bietet es eine Option zum dynamischen Laden eines Moduls Ihrer Wahl an. Letzteres mit __import__()
weil ich eine Zeichenkette übergebe - (hier habe ich ein Problem - aber ich komme gleich darauf zurück)... dann gibt es die Möglichkeit, das Modul nach all seinen Klassen, Funktionen usw. zu "durchsuchen" (mit dir([module name])
...).
Das Problem:
Wenn das Modul dynamisch geladen wird - es ist eingebettet in eine try/except
Anweisung - wenn sie erfolgreich ist, meldet sie, dass das "Modul geladen" ist, und wenn sie fehlschlägt, meldet sie ... "Failed to load...".
Wenn Sie den Namen eines Moduls eingeben, z. B. ein Modul mit dem Namen "uu", wird "geladen" angezeigt. Ich weiß also, dass es geladen wird. Wenn ich jedoch zurück gehe und die Funktion aufrufe, die alle geladenen Module überprüft, ist sie leer (mit sys.modules
)
Ich denke, dass Python das Modul an einen temporären Ort lädt, der nicht sys.modules
denn wenn ich das Skript verlasse und die sys.modules
sie ist nicht vorhanden.