[Python-de] Dynamisch Module Nachladen wenn die Namen erst zur Laufzeit bekannt sind?

Gerald Klix Gerald.Klix at klix.ch
Do Nov 15 14:20:43 UTC 2007


Hi,
das geht ganz einfach, indem man die eingebaute Funktion __import__ verwendet.
Es ist sogar so, daß import seinerseits wiederum auf __import__ basiert.

Siehe: http://docs.python.org/lib/built-in-funcs.html


HTH,
Gerald

Bastian Venthur schrieb:
> Hi Liste,
> 
> 
> Was ist der eleganteste Weg um dynamisch Module aus einem Paket
> nachzuladen wenn die Modulnamen erst zur Laufzeit feststehen?
> 
> Als uneleganteste Lösung könnte man bei Programmstart alle Module eines
> Paketes laden (wobei zur Zeit der Programmierung die Namen noch nicht
> feststehen), also sowas wie
> 
>   import paket.*                 oder
>   from paket import *
> 
> was ja leider nicht geht.
> 
> Besser wäre wenn bei Nutzereingabe der string genommen wird und sowas wie
> 
>   from paket import eingabe
> 
> das könnte man mit exec sicher noch irgendwie machen, aber kennt jemand
> ne elegantere Lösung?
> 
> Hintergrund ist eine Nutzanwendung in dem in einem Paket nur Module sind
> die eine Klasse enthalten die alle von der selben Klasse abgeleitet
> sind. Je nach Nutzereingabe soll die jeweilige Klasse geladen werden.
> Sowas wie ein Plugin-System eben. Schön wäre es auch wenn man bei neuer
> Eingabe das alte Modul wieder entladen könnte...
> 
> 
> Schöne Grüße,
> 
> Bastian
>