Skip to content
Permalink
Browse files

Remove plugin module path when unloading

    Unloading plugin must remove added module path
    in order to prevent wrong package import when reloading
  • Loading branch information
dmarteau committed Apr 23, 2019
1 parent 7363276 commit 6af744da82f288ce79ab545386217ddf44b505f1
Showing with 14 additions and 3 deletions.
  1. +14 −3 python/utils.py
@@ -28,7 +28,7 @@
"""

from qgis.PyQt.QtCore import QCoreApplication, QLocale, QThread
from qgis.PyQt.QtCore import QCoreApplication, QLocale, QThread, qDebug
from qgis.PyQt.QtWidgets import QPushButton, QApplication
from qgis.core import Qgis, QgsMessageLog, qgsfunction, QgsMessageOutput
from qgis.gui import QgsMessageBar
@@ -452,12 +452,23 @@ def _unloadPluginModules(packageName):
if hasattr(sys.modules[mod], 'qCleanupResources'):
sys.modules[mod].qCleanupResources()
except:
pass
# Print stack trace for debug
qDebug("qCleanupResources error:\n%s" % traceback.format_exc())

# try removing path
if hasattr(sys.modules[mod], '__path__'):
for path in sys.modules[mod].__path__:
try:
sys.path.remove(path)
except ValueError:
# Discard if path is not there
pass

# try to remove the module from python
try:
del sys.modules[mod]
except:
pass
qDebug("Error when removing module:\n%s" % traceback.format_exc())
# remove the plugin entry
del _plugin_modules[packageName]

0 comments on commit 6af744d

Please sign in to comment.
You can’t perform that action at this time.