Dynamisches Laden von Klassen in Python 2.6: RuntimeWarning: Die Plugins des übergeordneten Moduls wurden bei der Verarbeitung des absoluten Imports nicht gefunden
Ich arbeite an einem Plugin-System, in dem Plugin-Module wie folgt geladen werden:
def load_plugins():
plugins=glob.glob("plugins/*.py")
instances=[]
for p in plugins:
try:
name=p.split("/")[-1]
name=name.split(".py")[0]
log.debug("Possible plugin: %s", name)
f, file, desc=imp.find_module(name, ["plugins"])
plugin=imp.load_module('plugins.'+name, f, file, desc)
getattr(plugin, "__init__")(log)
instances=instances+plugin.get_instances()
except Exception as e:
log.info("Failed to load plugin: "+str(p))
log.info("Error: %s " % (e))
log.info(traceback.format_exc(e))
return instances
Der Code funktioniert, aber für jede Import-Anweisung im Plugin-Code erhalte ich eine Warnung wie folgt:
plugins/plugin.py:2: RuntimeWarning: Parent module 'plugins' not found while handling absolute import
import os
Für den Hauptprogrammcode werden keine Fehler gemeldet, und die Plugins funktionieren.
Kann jemand erklären, was die Warnung bedeutet und was ich falsch mache. Muss ich ein leeres Plugins-Modul separat erstellen und importieren, um Python glücklich zu machen?