From a1c3d0dcdf0b202cbf861c27b04cb8630b68f89f Mon Sep 17 00:00:00 2001 From: mathieui Date: Sat, 17 Nov 2012 23:03:38 +0100 Subject: [PATCH] Fix #2151 (cannot reload the OTR plugin) We were using the deprecated imp methods, now we use importlib --- src/plugin_manager.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/plugin_manager.py b/src/plugin_manager.py index 32cb2c03..4c3007cc 100644 --- a/src/plugin_manager.py +++ b/src/plugin_manager.py @@ -5,7 +5,7 @@ the API together. Defines also a bunch of variables related to the plugin env. """ -import imp +import importlib import os import sys import logging @@ -39,6 +39,7 @@ except OSError: pass sys.path.append(plugins_dir) +finder = importlib.machinery.PathFinder() class PluginManager(object): """ @@ -64,23 +65,16 @@ class PluginManager(object): self.unload(name) try: - if name in self.modules: - imp.acquire_lock() - module = imp.reload(self.modules[name]) - imp.release_lock() - else: - file, filename, info = imp.find_module(name, [plugins_dir]) - imp.acquire_lock() - module = imp.load_module(name, file, filename, info) - imp.release_lock() + loader = finder.find_module(name) + if not loader: + self.core.information('Could not find plugin: %s' % name, 'Error') + return + module = loader.load_module() except Exception as e: import traceback log.debug("Could not load plugin: \n%s", traceback.format_exc()) self.core.information("Could not load plugin: %s" % e, 'Error') return - finally: - if imp.lock_held(): - imp.release_lock() self.modules[name] = module self.commands[name] = {}