Opened 16 months ago
Closed 14 months ago
#67842 closed defect (fixed)
Qgis3 - problems with some plugin
Reported by: | news24lor | Owned by: | Veence (Vincent) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.8.1 |
Keywords: | Cc: | nilason (Nicklas Larsson) | |
Port: | qgis3 |
Description
Hello
I would like to report some probelms I have encountered in QGIS3 with some widely used plugins.
QGIS3 works very well in general and many plugins work without problems but some very popular ones do not load at startup with an error indication that links to python modules that I cannot find in macports.
One plugin that does not load is "Data Plotly," a fantastic plugin that allows you to graph data. The error message is this:
Couldn't load plugin 'DataPlotly' due to an error when calling its classFactory() method ModuleNotFoundError: No module named 'PyQt5.QtWebKit' Traceback (most recent call last): File "/Applications/MacPorts/QGIS3.app/Contents/MacOS/../Resources/python/qgis/utils.py", line 423, in _startPlugin plugins[packageName] = package.classFactory(iface) File "/Users/ben/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/DataPlotly/__init__.py", line 33, in classFactory from .data_plotly import DataPlotly ....... ModuleNotFoundError: No module named 'PyQt5.QtWebKit'
The PyQt5-qtwebkit module I could not find in macports.
The other plugin that does not load is "Spatial Analysis Toolbox" and the error is:
Couldn't load plugin 'spatialanalysistoolbox' due to an error when calling its classFactory() method ModuleNotFoundError: No module named 'mgwr' Traceback (most recent call last): File "/Applications/MacPorts/QGIS3.app/Contents/MacOS/../Resources/python/qgis/utils.py", line 423, in _startPlugin plugins[packageName] = package.classFactory(iface) File "/Users/ben/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/spatialanalysistoolbox/__init__.py", line 36, in classFactory from .spatialanalysistoolbox import SpatialAnalysisToolboxPlugin File "/Applications/MacPorts/QGIS3.app/Contents/MacOS/../Resources/python/qgis/utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) ....... ModuleNotFoundError: No module named 'mgwr'
Where is "mgr"?
Is it possible to find these modules in MacPorts?
Thanks
Lorenzo
Change History (14)
comment:1 Changed 16 months ago by jmroot (Joshua Root)
Cc: | nilason added |
---|---|
Owner: | set to Veence |
Status: | new → assigned |
comment:2 Changed 15 months ago by nilason (Nicklas Larsson)
comment:3 Changed 15 months ago by nilason (Nicklas Larsson)
There IS actually a possibility to install PyQt5.QtWebKit with the added non-default variant, e.g. py311-pyqt5 +webkit
.
I have not been able to test that, as I run into build errors Project ERROR: Could not resolve SDK Path for 'macosx12.3' using --show-sdk-path
...
comment:4 Changed 15 months ago by news24lor
Hi Nicklas.
You wrote:
Qt WebKit has been deprecated and finally removed with Qt 5.6 https://wiki.qt.io/New_Features_in_Qt_5.6#Removed_Modules, Qt5 on MacPorts is now at version 5.15. May I suggest you file a ticket at https://github.com/ghtmtt/DataPlotly to perhaps adopt the code to use QtWebEngineWidgets (if I'm not mistaken) https://www.riverbankcomputing.com/software/pyqtwebengine.
I will done.
I will try the variant py311-pyqt5+WebKit
Thanks for all
Lorenzo
comment:5 Changed 15 months ago by nilason (Nicklas Larsson)
py-mgwr
is now available as part of py-pysal
, please try and report back!
comment:6 Changed 15 months ago by news24lor
Hi Nicklas
I installed "mgwr" with some difficulty because many dependencies had to be installed with "port -f activate" but I succeeded.
Now the "Spatial Analysis Toolbox" plugin works natively.
Fantastic!
Thank you
Now there is only the problem of "Qt WebKit" which as you said is deprecated in the new versions of Qt replaced by "Qt WebEngine":
https://doc.qt.io/qt-5/qtwebenginewidgets-qtwebkitportingguide.html
but still the "DataPlotly" plugin uses it because the code is always there and "Qt WebKit" is within the officially distributed versions of QGIS. Several tickets are needed.
Anyway Thanks
Lorenzo
comment:7 Changed 15 months ago by nilason (Nicklas Larsson)
comment:8 Changed 14 months ago by nilason (Nicklas Larsson)
Lorenzo,
there was a bug in the 'py-pyqt5' Portfile, which has now been fixed. Please try again with py311-pyqt5 +webkit
.
comment:9 follow-ups: 10 12 Changed 14 months ago by news24lor
Hi Nicklas
I reinstalled 'py311-pyqt5 +webkit' but when I open QGIS the 'DataPlotly' plugin error remains:
Couldn't load plugin 'DataPlotly' due to an error when calling its classFactory() method ModuleNotFoundError: No module named 'PyQt5.QtWebKit' Traceback (most recent call last): File "/Applications/MacPorts/QGIS3.app/Contents/MacOS/../Resources/python/qgis/utils.py", line 423, in _startPlugin plugins[packageName] = package.classFactory(iface) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/lorenzo/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/DataPlotly/__init__.py", line 33, in classFactory from .data_plotly import DataPlotly File "/Applications/MacPorts/QGIS3.app/Contents/MacOS/../Resources/python/qgis/utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/lorenzo/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/DataPlotly/data_plotly.py", line 32, in from DataPlotly.gui.dock import DataPlotlyDockManager File "/Applications/MacPorts/QGIS3.app/Contents/MacOS/../Resources/python/qgis/utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/lorenzo/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/DataPlotly/gui/dock.py", line 19, in from DataPlotly.gui.plot_settings_widget import DataPlotlyPanelWidget File "/Applications/MacPorts/QGIS3.app/Contents/MacOS/../Resources/python/qgis/utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/lorenzo/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/DataPlotly/gui/plot_settings_widget.py", line 49, in from qgis.PyQt.QtWebKit import QWebSettings File "/Applications/MacPorts/QGIS3.app/Contents/MacOS/../Resources/python/qgis/utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Applications/MacPorts/QGIS3.app/Contents/MacOS/../Resources/python/qgis/PyQt/QtWebKit.py", line 24, in from PyQt5.QtWebKit import * File "/Applications/MacPorts/QGIS3.app/Contents/MacOS/../Resources/python/qgis/utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ModuleNotFoundError: No module named 'PyQt5.QtWebKit' Python version: 3.11.5 (main, Aug 27 2023, 16:04:19) [Clang 14.0.3 (clang-1403.0.22.14.1)] QGIS version: 3.32.2-Lima Lima, exported
It is very difficult to align the Python modules of QGIS plugins with the modules installed by MacPorts. For example, another plugin does not load because it needs NumPy version 1.24 or lower while MacPorts has 1.25. As for QtWebKit which is obsolete for Qt but still present in the QGIS code and also used by other plugins.
Thanks
comment:10 follow-up: 11 Changed 14 months ago by nilason (Nicklas Larsson)
Replying to news24lor:
I reinstalled 'py311-pyqt5 +webkit' but when I open QGIS the 'DataPlotly' plugin error remains:
You probably need to update the "port tree" locally with sudo port selfupdate
and only then (re-)install py311-pyqt5 +webkit
.
It is very difficult to align the Python modules of QGIS plugins with the modules installed by MacPorts. For example, another plugin does not load because it needs NumPy version 1.24 or lower while MacPorts has 1.25. As for QtWebKit which is obsolete for Qt but still present in the QGIS code and also used by other plugins.
Well, this is both the strength and (sometimes) limitation of MP, it generally offers the latest stable version of a given piece of software. If a problem occurs with an update of a port, say QGIS itself, it may be patched by MP and the issue is usually reported upstreams. The plugins, however, is a quite different issue, it is virtually impossible to monitor and track them. The "webkit" problem (besides from not being installed by default) stemmed from a MP bug, which is now fixed. Issues like the incompatible numpy version you mentioned, must be reported upstreams (there is probably a trivial fix for that, the authors have likely not bumped into this yet as they apparently don't use MP :).
comment:11 Changed 14 months ago by news24lor
Replying to nilason:
You probably need to update the "port tree" locally with
sudo port selfupdate
and only then (re-)installpy311-pyqt5 +webkit
.
Yes I have rebuilt all and now DataPlotly works! Fantastic. Very good!
It's a bit difficult to install py311-plotly but it works!
Many many thanks!
It is very difficult to align the Python modules of QGIS plugins with the modules installed by MacPorts. For example, another plugin does not load because it needs NumPy version 1.24 or lower while MacPorts has 1.25. As for QtWebKit which is obsolete for Qt but still present in the QGIS code and also used by other plugins.
Well, this is both the strength and (sometimes) limitation of MP, it generally offers the latest stable version of a given piece of software. If a problem occurs with an update of a port, say QGIS itself, it may be patched by MP and the issue is usually reported upstreams. The plugins, however, is a quite different issue, it is virtually impossible to monitor and track them. The "webkit" problem (besides from not being installed by default) stemmed from a MP bug, which is now fixed. Issues like the incompatible numpy version you mentioned, must be reported upstreams (there is probably a trivial fix for that, the authors have likely not bumped into this yet as they apparently don't use MP :).
Now I try other important plugin.
Thanks a lot
comment:12 follow-up: 13 Changed 14 months ago by nilason (Nicklas Larsson)
Replying to news24lor:
For example, another plugin does not load because it needs NumPy version 1.24 or lower while MacPorts has 1.25.
Just tested the "spatialanalysistoolbox" and I now understand your problem with numpy. It was caused by failure of numba (!] to load numpy. Will be fixed by next numba release (see https://trac.macports.org/ticket/68159).
comment:13 Changed 14 months ago by news24lor
Replying to nilason:
Replying to news24lor:
For example, another plugin does not load because it needs NumPy version 1.24 or lower while MacPorts has 1.25.
Just tested the "spatialanalysistoolbox" and I now understand your problem with numpy. It was caused by failure of numba (!] to load numpy. Will be fixed by next numba release (see https://trac.macports.org/ticket/68159).
Yes It's a failure from Numba...
Until now, all the plugins that I use work!
And they are very fast under M1/M2 processor.
Fantastic.
Many many thanks.
comment:14 Changed 14 months ago by nilason (Nicklas Larsson)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Replying to news24lor:
Qt WebKit
has been deprecated and finally removed with Qt 5.6 https://wiki.qt.io/New_Features_in_Qt_5.6#Removed_Modules, Qt5 on MacPorts is now at version 5.15.May I suggest you file a ticket at https://github.com/ghtmtt/DataPlotly to perhaps adopt the code to use QtWebEngineWidgets (if I'm not mistaken) https://www.riverbankcomputing.com/software/pyqtwebengine.
mgwr
is/was part ofpy-pysal
which is now pretty outdated on MacPorts. I have an update prepared, but before I can make a PR a number of outdated and non-existing ports need to be accepted and added.