eric6/PluginManager/PluginManager.py

changeset 7400
e5d62581d002
parent 7360
9190402e4505
child 7785
9978016560ec
diff -r 7088860e4a00 -r e5d62581d002 eric6/PluginManager/PluginManager.py
--- a/eric6/PluginManager/PluginManager.py	Fri Feb 07 18:49:32 2020 +0100
+++ b/eric6/PluginManager/PluginManager.py	Sat Feb 08 16:47:20 2020 +0100
@@ -9,8 +9,9 @@
 
 import os
 import sys
-import imp
 import zipfile
+import types
+import importlib
 
 from PyQt5.QtCore import (
     pyqtSignal, QObject, QDate, QFile, QFileInfo, QUrl, QIODevice
@@ -400,7 +401,10 @@
         """
         try:
             fname = "{0}.py".format(os.path.join(directory, name))
-            module = imp.load_source(name, fname)
+            spec = importlib.util.spec_from_file_location(name, fname)
+            module = importlib.util.module_from_spec(spec)
+            sys.modules[module.__name__] = module
+            spec.loader.exec_module(module)
             if not hasattr(module, "autoactivate"):
                 module.error = self.tr(
                     "Module is missing the 'autoactivate' attribute.")
@@ -425,7 +429,7 @@
             module.eric6PluginModuleFilename = fname
             self.__modulesCount += 1
             if reload_:
-                imp.reload(module)
+                importlib.reload(module)
                 self.initOnDemandPlugin(name)
                 try:
                     pluginObject = self.__onDemandInactivePlugins[name]
@@ -436,7 +440,7 @@
         except PluginLoadError:
             print("Error loading plug-in module:", name)
         except Exception as err:
-            module = imp.new_module(name)
+            module = types.ModuleType(name)
             module.error = self.tr(
                 "Module failed to load. Error: {0}").format(str(err))
             self.__failedModules[name] = module

eric ide

mercurial