mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
Remove plugin module path when unloading
Unloading plugin must remove added module path in order to prevent wrong package import when reloading
This commit is contained in:
parent
736327634e
commit
6af744da82
@ -28,7 +28,7 @@ QGIS utilities module
|
||||
|
||||
"""
|
||||
|
||||
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]
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user