
Hi,
ich moechte eine Art Plugin-Mechanismus mit Python realisieren, wobei die Plugins als Module in einem vordefinierten Package liegen. Ich hab sowohl den Namen des Modules, als auch den der Klasse in einer Liste im Package definiert.
Die Frage ist: Welche Funktionen/Module von Python koennen mir da helfen? Ein naiver Ansatz mit
modul = getattr(package, 'modulname') clazz = getattr(modul, 'Klassenname') obj = clazz
scheitert schon an der 1. Zeile.
Gibts bessere Vorschlaege um "dynamisch" Klassen zu laden und zu instanziieren? Eine vollautomatische Loesung bei der die gesuchten Klassen eine bestimmte Basisklasse haben ist (momentan) noch nicht noetig, es reicht wenn ich mit Modul+Klassenname eine Instanz erzeugen kann.
Andreas

--On 24. Januar 2006 01:53:35 +0100 Andreas Pakulat apaku@gmx.de wrote:
Hi,
ich moechte eine Art Plugin-Mechanismus mit Python realisieren, wobei die Plugins als Module in einem vordefinierten Package liegen. Ich hab sowohl den Namen des Modules, als auch den der Klasse in einer Liste im Package definiert.
Die Frage ist: Welche Funktionen/Module von Python koennen mir da helfen? Ein naiver Ansatz mit
__import__() ist Dein Freund -> Python Library Reference.
-aj
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Andreas Pakulat schrieb:
ich moechte eine Art Plugin-Mechanismus mit Python realisieren
Hier ein Link für dich: http://pythonwiki.pocoo.org/Modul_Import Dort gibt es unten auf der Seite auch zwei Links zum Thema Plugin-System...

On 24.01.06 08:13:08, jens wrote:
Andreas Pakulat schrieb:
ich moechte eine Art Plugin-Mechanismus mit Python realisieren
Hier ein Link für dich: http://pythonwiki.pocoo.org/Modul_Import Dort gibt es unten auf der Seite auch zwei Links zum Thema Plugin-System...
Hmm, das Plugin-System von dir auf svn.tectic.de ist fuer mich etwas _zu_ undurchsichtig (lies: Ist mir zuviel Code um mich da durchzuwuehlen). Aber das von Dookie sieht sehr "angenehm" aus und nach 6-maligem Lesen des Codes habe ich ihn sogar verstanden :-)
Halt, doch nicht. Muesste die letzte Zeile im Listing von http://www.python-forum.de/viewtopic.php?t=2298#12533 nicht "add_plugins(ppath)" lauten?
Andreas

Andreas Pakulat schrieb:
Hmm, das Plugin-System von dir auf svn.tectic.de ist fuer mich etwas _zu_ undurchsichtig
Die Sourcen von svn.tectic.de sind nicht von mir, wie du hier http://www.python-forum.de/viewtopic.php?p=22375#22375 sehen kannst ;)
Meinen Module-Manager findest du hier: http://pylucid.python-hosting.com/file/trunk/PyLucid_system/module_manager.p... Aber der ist so ohne weiteres nicht einzeln zu gebrauchen, weil es speziell für PyLucid her halten muß ;) Dabei sind die Plugin-Daten in einer SQL-Datenbank hinterlegt. Also wahrscheinlich nicht das was du suchst ;)

On 24.01.06 13:06:08, jens wrote:
Andreas Pakulat schrieb:
Hmm, das Plugin-System von dir auf svn.tectic.de ist fuer mich etwas _zu_ undurchsichtig
Die Sourcen von svn.tectic.de sind nicht von mir, wie du hier http://www.python-forum.de/viewtopic.php?p=22375#22375 sehen kannst ;)
Huch :-) Da hab ich mich vertan...
Meinen Module-Manager findest du hier: http://pylucid.python-hosting.com/file/trunk/PyLucid_system/module_manager.p... Aber der ist so ohne weiteres nicht einzeln zu gebrauchen, weil es speziell für PyLucid her halten muß ;) Dabei sind die Plugin-Daten in einer SQL-Datenbank hinterlegt. Also wahrscheinlich nicht das was du suchst ;)
Nope, aber ich finde es wirklich erstaunlich wie einfach so ein Plugin-Kram in einer Sprache wie Python ist. Selbst in Java ist das dynamische hinzuladen von Plugins nicht so "schoen" und von C oder C++ wollen wir lieber gar nicht reden...
Andreas
participants (3)
-
Andreas Jung
-
Andreas Pakulat
-
jens