I’ve tried to load the Speckle 2.0 Connector for QGIS using the QGIS plugin manager window. The plugin was installed successfully but its toolbar didn’t load. I also have tried to reinstall and install from the zip file. When I relaunch QGIS a error message appears with the following
Unable to load plugin ‘speckle-qgis’ due to a error when calling Class Factory().
AttributeError: module ‘speckle-qgis’ has no attribute ‘classFactory’
Traceback (most recent call last):
File “/Applications/QGIS-LTR.app/Contents/MacOS/…/Resources/python/qgis/utils.py”, line 423, in _startPlugin
plugins[packageName] = package.classFactory(iface)
AttributeError: module ‘speckle-qgis’ has no attribute ‘classFactory’
I can replicate this error with the version that is available from the QGIS plugin manager. The v2.9.0 tagged release on both the public QGIS marketplace and our speckle-qgis is also not working.
However, I can also help you manually install our most recent version (2.9.3) and get you up and running. The latest code available is functional.
Uninstall the broken Speckle plugin from the manager
Open your active User profile directory
Navigate to the plugins directory
Download the .zip from the main branch v2.9.3 on the speckle-gis GitHub repo into the plugins folder
Expand the Zip
Restart QGIS
You can now enable the Speckle plugin in the manager. Activating it will pause as it downloads dependencies (specklepy)
It didn’t work. I’ve replicated your steps and got the same error.
According to the Plugin Manager, the version of Speckle installed with your ZIP file still is 2.9.0 and not the 2.9.3.
If it makes any difference my macOS is Ventura 13.0 (22A380).
Confusingly, the Plugin Information page continues to be delivered by the QGIS Plugins site even though you have manually installed a newer version. Hence the incorrect v2.9.0
I’m afraid without installing latest macOS, I’m unable to replicate your setup to mirror the persistent problem. I’m not convinced that is the cause, but I also am using a slightly different version of QGIS.
Last roll of the dice before I have to then consult the QGIS team (timezones), instead of downloading the repo latest zip, are you familiar enough with git that you could clone the repo into the plugins folder? The fact that, for me, the initial error went away I want to get rule out bad links or zip files altogether.
This is the method we use when developing/testing.
With QGIS closed, in Terminal, navigate to the profile directory and type:
The quick fix was released as 2.9.4 if steps above didn’t work for you, please try in a few days when it’s approved and available through Plugin Manager
P.S. when replicating the steps above and copying files over, make sure QGIS is closed
We pushed a new version to the QGIS plug-in repository this week. It should be approved soon. In the meantime it is possible to install manually by cloning our repo code into the plugins folder
So, I’ve tried both ways and the result is the same. Either Plugin Manager and Github repository failed.
However, I get a different message this time. It’s the following:
ModuleNotFoundError: No module named ‘specklepy’
Traceback (most recent call last):
File “/Applications/QGIS-LTR.app/Contents/MacOS/…/Resources/python/qgis/utils.py”, line 423, in _startPlugin
plugins[packageName] = package.classFactory(iface)
File “/Users/femfs/Library/Application Support/QGIS/QGIS3/profiles/FEMFS/python/plugins/speckle-qgis-main/init.py”, line 51, in classFactory
from speckle_qgis import SpeckleQGIS
File “/Applications/QGIS-LTR.app/Contents/MacOS/…/Resources/python/qgis/utils.py”, line 888, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
File “/Users/femfs/Library/Application Support/QGIS/QGIS3/profiles/FEMFS/python/plugins/speckle-qgis-main/speckle_qgis.py”, line 24, in
from specklepy.api import operations
File “/Applications/QGIS-LTR.app/Contents/MacOS/…/Resources/python/qgis/utils.py”, line 888, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
ModuleNotFoundError: No module named ‘specklepy’
a. Within the QGIS python console, could you try typing import specklepy and paste any error here.
b. If there was no error, in the Python console, type specklepy and paste the response here