estoy trabajando en un sistema de plugins donde los módulos plug-in se cargan de esta manera:Clase dinámica en Python 2.6: RuntimeWarning: Módulo de Padres 'plugins' no encontrado durante la manipulación de importación absoluta
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
el código funciona, pero para cada declaración de importación en el código del plugin recibo una advertencia como esta:
plugins/plugin.py:2: RuntimeWarning: Parent module 'plugins' not found while handling absolute import
import os
se informa de ningún error para el código principal del programa, y el trabajo de plugins.
¿Alguien puede explicar lo que significa la advertencia y lo que estoy haciendo mal? ¿Debo crear un módulo de complementos vacío por separado e importarlo para mantener a python satisfecho?
para el registro: ' 'plugins'' en módulo' Padre' plugins 'not found' proviene del valor 'name' pasado a [imp.load_module] (https://docs.python.org/2/library/imp.html#imp.load_module), ej. '" plugins.something "' en 'imp.load_module (" plugins.something ")'. En mi caso, el valor 'name' era como' ".something" 'y, por lo tanto, el mensaje contenía' '' 'en lugar de' 'plugins''. – n611x007