diff --git a/weboob/modules.py b/weboob/modules.py index 44204c81..2f39df50 100644 --- a/weboob/modules.py +++ b/weboob/modules.py @@ -118,6 +118,11 @@ class ModulesLoader: def __init__(self): self.modules = {} + def get_or_load_module(self, name): + if name not in self.modules: + self.load_module('weboob.backends.%s' % name) + return self.modules[name] + def load(self): path = backends.__path__[0] regexp = re.compile('^%s/([\w\d_]+)$' % path) diff --git a/weboob/ouiboube.py b/weboob/ouiboube.py index 77a6643a..53bc7af4 100644 --- a/weboob/ouiboube.py +++ b/weboob/ouiboube.py @@ -46,7 +46,6 @@ class Weboob: # Modules loader self.modules_loader = ModulesLoader() - self.modules_loader.load() # Backends config if not backends_filename: @@ -58,7 +57,7 @@ class Weboob: def load_backends(self, caps=None, names=None): for name, _type, params in self.backends_config.iter_backends(): try: - module = self.modules_loader.modules[_type] + module = self.modules_loader.get_or_load_module(_type) except KeyError: warning('Unable to find module "%s" for backend "%s"' % (_type, name)) continue @@ -76,6 +75,7 @@ class Weboob: return self.backends def load_modules(self, caps=None, names=None): + self.modules_loader.load() for name, module in self.modules_loader.modules.iteritems(): if (caps is None or module.has_caps(caps)) and \ (names is None or module.name in names):