Modul per __import__ erneut einbinden - mit anderem Inhalt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
astraios
User
Beiträge: 9
Registriert: Montag 21. April 2008, 15:45

Dienstag 24. Juni 2008, 11:58

Hallo,

ich hab da ein kleines Problem betreffend Import von Modulen:

Ich importiere dynamisch Module aus einem bestimmten Verzeichnis.
Dafür verwende ich __import__.

Jetzt kann es durchaus vorkommen, dass ich ein Modul (z.B. "ModulA") lade und eine Klasse aus diesem Modul instanziiere und benutze. Irgendwann lösch ich die Instanz. In der Zwischenzeit ändert sich der Code in diesem ModulA. Jetzt möchte ich es erneut importieren und eine Instanz der nun geänderten Klasse erstellen.

Und das klappt nicht. Nach dem Ändern des Modul-Codes und dem erneuten Aufruf von __import__('ModulA') habe ich noch das Verhalten des alten Modul-Codes.
Ursache ist wahrscheinlich, dass Python dann bereits ein Modul mit diesem Namen kennt und es deshalb nicht mehr neu importiert - das ist aber für meinen Fall blöd.
Wie kann ich Python dazu bewegen, dieses geänderte Modul zu verwenden? Kann ich dazu vorher das "alte" Modul "deportieren"? Oder überschreiben? Und wie kann ich prüfen, ob ein bestimmtes Modul bereits bekannt ist?

Vielen Dank schonmal im Voraus! :)
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Dienstag 24. Juni 2008, 12:00

Module werden in sys.modules gecacht. Wenn du es dort raulöscht wird es neu geladen. Das ist auch das, was reload() macht.
TUFKAB – the user formerly known as blackbird
astraios
User
Beiträge: 9
Registriert: Montag 21. April 2008, 15:45

Dienstag 24. Juni 2008, 15:29

Vielen Dank für die schnelle Antwort! Klappt gut mit reload().

Danke!
Antworten