Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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 24, 2019
1 parent 7363276 commit 6af744d
Showing 1 changed file with 14 additions and 3 deletions.
17 changes: 14 additions & 3 deletions python/utils.py
Expand Up @@ -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
Expand Down Expand Up @@ -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]

Expand Down

0 comments on commit 6af744d

Please sign in to comment.