[Python-de] Dynamisch Module Nachladen wenn die Namen erst zur Laufzeit bekannt sind?
Gerald Klix
Gerald.Klix at klix.ch
Do Nov 15 15:20:43 CET 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
>
Mehr Informationen über die Mailingliste python-de