Carregamento de classe dinâmica no Python 2.6: RuntimeWarning: 'plugins' do módulo pai não encontrados ao manipular importação absoluta
Estou trabalhando em um sistema de plug-in no qual os módulos de plug-in são carregados da seguinte maneira:
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
O código funciona, mas para cada instrução de importação no código do plugin, recebo um aviso como este:
plugins/plugin.py:2: RuntimeWarning: Parent module 'plugins' not found while handling absolute import
import os
Nenhum erro é relatado para o código principal do programa e os plug-ins funcionam.
Alguém pode explicar o que significa o aviso e o que estou fazendo de errado. Preciso criar um módulo de plugins vazio separadamente e importá-lo para manter o python feliz?