[Python-de] Add-On's

"Martin v. Löwis" martin at v.loewis.de
Sa Feb 16 19:54:01 UTC 2008


> Soll so funktionieren wie die add-os in z.B. Firefox. 
> Hintergrund des ganzen ist, ich will meine Applikation erweiterbar 
> machen ohne das der user den Quellcode anfassen muss oder 
> Programmteile austauschbar halten. 

Mir ist immernoch nicht klar, was die Funktion dieser Plugins
sein wird. Mit dieser Spezifikation ist das ganz einfach zu
machen:

def load_plugins(plugin_dir):
     for file in glob.glob(plugin_dir+"/*.py"):
         execfile(file)

Bei Start des Programms einmal load_plugins("/var/lib/myplugins")
aufrufen - fertig.

Ob diese Plugins dann tatsächlich Deine Anwendung erweitern können,
hängt stark von Deiner Anwendung ab. Wenn Du z.B. eine globale
Variable config.DatabaseBackend hast, die durch

   from pysqlite2 import dbapi2 as DatabaseBackend

dann könnte das plugin die austauschen durch

   import config
   import psycopg2
   config.DatabaseBackend = psycopg2

Du müsstest dann natürlich im ganzen Programm immer brav
config.DatabaseBackend benutzen, und nirgends pysqlite2 direkt
importieren, also etwa

   config.DatabaseBackend.connect("connectionstring")

Ciao,
Martin