Module neu laden

Wenn man im interaktiven Interpreter, oder einem persitenten Webserver Programme entwickelt müsste man für Code Änderungen den Server bzw den Interpreter neustarten. Ein erneuter import würde nichts bewirken.

Wie also kann man Module nachladen?

Einfaches Nachladen

   1 # Modul importieren
   2 import mein_modul
   3 
   4 # Modul nachladen
   5 reload(mein_modul)

Allerdings wird damit nur dieses Modul nachgeladen. Was ist, aber wenn man auch noch andere verändert hat? Für solche Fälle muss man mit der Trickkiste arbeiten:

Alle Module nachladen

   1 import sys
   2 [reload(module) for name, module in sys.modules.items() if not name.startswith('__') and module]

Da alle importierten Module in sys.modules verzeichnet sind kann man auf diese Weise sehr einfach alle Module nachladen. Die beiden Überprüfungen sind nötig, damit builtin module und NoneType Module übersprungen werden.

Module neu laden (last edited 2010-07-04 07:36:19 by newacct)