north-road / qgis-processing-saga-nextgen

GNU General Public License v3.0
21 stars 11 forks source link

Plugin fails to load on QGIS 3.22/master #18

Closed gioman closed 2 years ago

gioman commented 2 years ago
Couldn't load plugin 'processing_saga_nextgen' due to an error when calling its classFactory() method 

ModuleNotFoundError: No module named 'processing.algs.saga.SagaNameDecorator' 
Traceback (most recent call last):
  File "C:\OSGeo4W/apps/qgis/./python\qgis\utils.py", line 423, in _startPlugin
    plugins[packageName] = package.classFactory(iface)
  File "C:\Users/giovanni/AppData/Roaming/QGIS/QGIS3\profiles\training/python/plugins\processing_saga_nextgen\__init__.py", line 22, in classFactory
    from .saga_nextgen_plugin import SagaNextGenProviderPlugin
  File "C:\OSGeo4W/apps/qgis/./python\qgis\utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
  File "C:\Users/giovanni/AppData/Roaming/QGIS/QGIS3\profiles\training/python/plugins\processing_saga_nextgen\saga_nextgen_plugin.py", line 21, in 
    from processing_saga_nextgen.processing.provider import SagaNextGenAlgorithmProvider
  File "C:\OSGeo4W/apps/qgis/./python\qgis\utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
  File "C:\Users/giovanni/AppData/Roaming/QGIS/QGIS3\profiles\training/python/plugins\processing_saga_nextgen\processing\provider.py", line 35, in 
    from .SagaAlgorithm import SagaAlgorithm
  File "C:\OSGeo4W/apps/qgis/./python\qgis\utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
  File "C:\Users/giovanni/AppData/Roaming/QGIS/QGIS3\profiles\training/python/plugins\processing_saga_nextgen\processing\SagaAlgorithm.py", line 55, in 
    from processing.algs.saga.SagaNameDecorator import decoratedAlgorithmName, decoratedGroupName
  File "C:\OSGeo4W/apps/qgis/./python\qgis\utils.py", line 888, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
ModuleNotFoundError: No module named 'processing.algs.saga.SagaNameDecorator'
Spokesman1 commented 2 years ago

I encounterd the same issue as follows (Plugin fails to load on QGIS 3.22)

Couldn't load plugin 'processing_saga_nextgen' due to an error when calling its classFactory() method

ModuleNotFoundError: No module named 'processing.algs.saga' Traceback (most recent call last): File "C:\OSGeo4W/apps/qgis/./python\qgis\utils.py", line 423, in _startPlugin plugins[packageName] = package.classFactory(iface) File "C:\Users/azmtas01/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\processing_saga_nextgen__init__.py", line 22, in classFactory from .saga_nextgen_plugin import SagaNextGenProviderPlugin File "C:\OSGeo4W/apps/qgis/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\Users/azmtas01/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\processing_saga_nextgen\saga_nextgen_plugin.py", line 21, in from processing_saga_nextgen.processing.provider import SagaNextGenAlgorithmProvider File "C:\OSGeo4W/apps/qgis/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\OSGeo4W/apps/qgis/./python/plugins\processing_saga_nextgen\processing\provider.py", line 35, in from .SagaAlgorithm import SagaAlgorithm File "C:\OSGeo4W/apps/qgis/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\OSGeo4W/apps/qgis/./python/plugins\processing_saga_nextgen\processing\SagaAlgorithm.py", line 55, in from processing.algs.saga.SagaNameDecorator import decoratedAlgorithmName, decoratedGroupName File "C:\OSGeo4W/apps/qgis/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) ModuleNotFoundError: No module named 'processing.algs.saga'

Python version: 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] QGIS version: 3.22.0-Białowieża Białowieża, d9022691f1

Python Path: C:/OSGeo4W/apps/qgis/./python C:/Users/azmtas01/AppData/Roaming/QGIS/QGIS3\profiles\default/python C:/Users/azmtas01/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins C:/OSGeo4W/apps/qgis/./python/plugins C:\OSGeo4W\bin\python39.zip C:\OSGeo4W\apps\Python39\DLLs C:\OSGeo4W\apps\Python39\lib C:\OSGeo4W\bin C:\Users\azmtas01\AppData\Roaming\Python\Python39\site-packages C:\OSGeo4W\apps\Python39 C:\OSGeo4W\apps\Python39\lib\site-packages C:\OSGeo4W\apps\Python39\lib\site-packages\GDAL-3.4.0-py3.9-win-amd64.egg C:\OSGeo4W\apps\Python39\lib\site-packages\win32 C:\OSGeo4W\apps\Python39\lib\site-packages\win32\lib C:\OSGeo4W\apps\Python39\lib\site-packages\Pythonwin C:/Users/azmtas01/AppData/Roaming/QGIS/QGIS3\profiles\default/python

SirRhynus commented 2 years ago

It seems alexbruy has moved the SAGA provider to an independent plugin in commit 277b71a of QGIS, which moved processing.algs.saga to sagaprovider. The fix is as simple as changing all occurences of processing.algs.saga to sagaprovider, but I don't know how to keep it backwards compatible with earlier versions of QGIS.

SirRhynus commented 2 years ago

Figured it out. if Qgis.QGIS_VERSION < '3.22'

nyalldawson commented 2 years ago

Fixed by https://github.com/north-road/qgis-processing-saga-nextgen/pull/19