From aa0084a37d5e9753bb2db95351ba815a103e1878 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Mon, 7 May 2012 13:59:27 +0200 Subject: [PATCH] use module imp instead of __import__ --- weboob/core/modules.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/weboob/core/modules.py b/weboob/core/modules.py index 2cc7de2a..9e8c7817 100644 --- a/weboob/core/modules.py +++ b/weboob/core/modules.py @@ -17,6 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . +import imp import sys import logging @@ -132,18 +133,20 @@ class ModulesLoader(object): raise ModuleLoadError(module_name, 'Module is not installed') try: - sys.path.append(minfo.path) + fp, pathname, description = imp.find_module(module_name, [minfo.path]) try: - module = Module(__import__(module_name, fromlist=[str(module_name)])) - except Exception, e: - if logging.root.level == logging.DEBUG: - self.logger.exception(e) - raise ModuleLoadError(module_name, e) - finally: - sys.path.remove(minfo.path) + module = Module(imp.load_module(module_name, fp, pathname, description)) + finally: + if fp: + fp.close() + except Exception, e: + if logging.root.level == logging.DEBUG: + self.logger.exception(e) + raise ModuleLoadError(module_name, e) if module.version != self.repositories.version: - raise ModuleLoadError(module_name, "Module requires Weboob %s, but you use Weboob %s" % (module.version, self.repositories.version)) + raise ModuleLoadError(module_name, "Module requires Weboob %s, but you use Weboob %s. Hint: use 'weboob-config update'" + % (module.version, self.repositories.version)) self.loaded[module_name] = module self.logger.debug('Loaded module "%s" from %s' % (module_name, module.package.__path__[0]))