napari-deeplabcut
napari-deeplabcut copied to clipboard
Failed to import command at 'napari_deeplabcut._widgets:KeypointControls':
After opening GUI by typing down napari
and turning on KeypointControls: napari_deeplabcut
button in the plugins, it turns out to run into error:
RuntimeError: Failed to import command at 'napari_deeplabcut._widgets:KeypointControls': The Qt SvgWidgets module was not found. It is not currently implemented in PyQt5.
Trace back:
QtBindingMissingModuleError Traceback (most recent call last)
File ~\anaconda3\Lib\site-packages\npe2\_command_registry.py:32, in CommandHandler.resolve(self
=CommandHandler(id='napari-deeplabcut.make_keypoi...me='napari_deeplabcut._widgets:KeypointCont
rols'))
31 try:
---> 32 self.function = utils.import_python_name(self.python_name)
self.function = None
self.python_name = 'napari_deeplabcut._widgets:KeypointControls'
self = CommandHandler(id='napari-deeplabcut.make_keypoint_controls', function=None, pyt
hon_name='napari_deeplabcut._widgets:KeypointControls')
utils = <module 'npe2.manifest.utils' from 'C:\\Users\\Admin\\anaconda3\\Lib\\site-pack
ages\\npe2\\manifest\\utils.py'>
33 except Exception as e:
File ~\anaconda3\Lib\site-packages\npe2\manifest\utils.py:254, in import_python_name(python_nam
e='napari_deeplabcut._widgets:KeypointControls')
252 module_name, funcname = match.groups() # type: ignore [union-attr]
--> 254 mod = import_module(module_name)
module_name = 'napari_deeplabcut._widgets'
255 return getattr(mod, funcname)
File ~\anaconda3\Lib\importlib\__init__.py:126, in import_module(name='napari_deeplabcut._widge
ts', package=None)
125 level += 1
--> 126 return _bootstrap._gcd_import(name[level:], package, level)
level = 0
name = 'napari_deeplabcut._widgets'
name[level:] = 'napari_deeplabcut._widgets'
package = None
_bootstrap = <module '_frozen_importlib' (frozen)>
File <frozen importlib._bootstrap>:1204, in _gcd_import(name='napari_deeplabcut._widgets', pack
age=None, level=0)
File <frozen importlib._bootstrap>:1176, in _find_and_load(name='napari_deeplabcut._widgets', i
mport_=<function _gcd_import>)
File <frozen importlib._bootstrap>:1147, in _find_and_load_unlocked(name='napari_deeplabcut._wi
dgets', import_=<function _gcd_import>)
File <frozen importlib._bootstrap>:690, in _load_unlocked(spec=ModuleSpec(name='napari_deeplabc
ut._widgets', lo...\\site-packages\\napari_deeplabcut\\_widgets.py'))
File <frozen importlib._bootstrap_external>:940, in exec_module(self=<_frozen_importlib_externa
l.SourceFileLoader object>, module=<module 'napari_deeplabcut._widgets' from 'C:\\U...\\site-pa
ckages\\napari_deeplabcut\\_widgets.py'>)
File <frozen importlib._bootstrap>:241, in _call_with_frames_removed(f=<built-in function exec>
, *args=(<code object <module> at 0x000002361AEDC790, fil...-packages\napari_deeplabcut\_widget
s.py", line 1>, {'Event': <class 'napari.utils.events.event.Event'>, 'FigureCanvas': <class 'ma
tplotlib.backends.backend_qtagg.FigureCanvasQTAgg'>, 'Image': <class 'napari.layers.image.image
.Image'>, 'MethodType': <class 'method'>, 'NavigationToolbar2QT': <class 'matplotlib.backends.b
ackend_qt.NavigationToolbar2QT'>, 'Optional': typing.Optional, 'Path': <class 'pathlib.Path'>,
'Points': <class 'napari.layers.points.points.Points'>, 'QAction': <class 'PyQt5.QtWidgets.QAct
ion'>, 'QCursor': <class 'PyQt5.QtGui.QCursor'>, ...}), **kwds={})
File ~\anaconda3\Lib\site-packages\napari_deeplabcut\_widgets.py:28
27 from qtpy.QtGui import QPainter, QAction, QCursor, QIcon
---> 28 from qtpy.QtSvgWidgets import QSvgWidget
29 from qtpy.QtWidgets import (
30 QButtonGroup,
31 QCheckBox,
(...)
48 QWidget,
49 )
File ~\anaconda3\Lib\site-packages\qtpy\QtSvgWidgets.py:19
18 if PYQT5:
---> 19 raise QtBindingMissingModuleError(name="QtSvgWidgets")
20 elif PYQT6:
QtBindingMissingModuleError: The QtSvgWidgets module was not found. It is not currently impleme
nted in PyQt5.
The above exception was the direct cause of the following exception:
RuntimeError Traceback (most recent call last)
File ~\anaconda3\Lib\site-packages\napari\_qt\menus\plugins_menu.py:105, in PluginsMenu._add_pl
ugin_actions.<locals>._add_toggle_widget(key=('napari-deeplabcut', 'Keypoint controls'), hook_t
ype='dock')
102 return
104 if hook_type == 'dock':
--> 105 self._win.add_plugin_dock_widget(*key)
key = ('napari-deeplabcut', 'Keypoint controls')
self._win = <napari._qt.qt_main_window.Window object at 0x000002360F118950>
self = <napari._qt.menus.plugins_menu.PluginsMenu object at 0x0000023618264820>
106 else:
107 self._win._add_plugin_function_widget(*key)
File ~\anaconda3\Lib\site-packages\napari\_qt\qt_main_window.py:790, in Window.add_plugin_dock_
widget(self=<napari._qt.qt_main_window.Window object>, plugin_name='napari-deeplabcut', widget_
name='Keypoint controls', tabify=False)
787 Widget = None
788 dock_kwargs = {}
--> 790 if result := _npe2.get_widget_contribution(plugin_name, widget_name):
widget_name = 'Keypoint controls'
plugin_name = 'napari-deeplabcut'
_npe2 = <module 'napari.plugins._npe2' from 'C:\\Users\\Admin\\anaconda3\\Lib\\site-pac
kages\\napari\\plugins\\_npe2.py'>
791 Widget, widget_name = result
793 if Widget is None:
File ~\anaconda3\Lib\site-packages\napari\plugins\_npe2.py:136, in get_widget_contribution(plug
in_name='napari-deeplabcut', widget_name='Keypoint controls')
134 if contrib.plugin_name == plugin_name:
135 if not widget_name or contrib.display_name == widget_name:
--> 136 return contrib.get_callable(), contrib.display_name
contrib = WidgetContribution(command='napari-deeplabcut.make_keypoint_controls', displa
y_name='Keypoint controls', autogenerate=False)
contrib.display_name = 'Keypoint controls'
137 widgets_seen.add(contrib.display_name)
138 if widget_name and widgets_seen:
File ~\anaconda3\Lib\site-packages\npe2\manifest\contributions\_widgets.py:49, in WidgetContrib
ution.get_callable(self=WidgetContribution(command='napari-deeplabcut.ma...lay_name='Keypoint c
ontrols', autogenerate=False), _registry=None)
46 def get_callable(
47 self, _registry: Optional[CommandRegistry] = None
48 ) -> Callable[..., Widget]:
---> 49 func = super().get_callable()
50 if self.autogenerate:
51 try:
File ~\anaconda3\Lib\site-packages\npe2\manifest\utils.py:71, in Executable.get_callable(self=W
idgetContribution(command='napari-deeplabcut.ma...lay_name='Keypoint controls', autogenerate=Fa
lse), _registry=<npe2._command_registry.CommandRegistry object>)
68 from npe2._plugin_manager import PluginManager
70 _registry = PluginManager.instance().commands
---> 71 return _registry.get(self.command)
_registry = <npe2._command_registry.CommandRegistry object at 0x000002360C7C83D0>
self.command = 'napari-deeplabcut.make_keypoint_controls'
self = WidgetContribution(command='napari-deeplabcut.make_keypoint_controls', display_n
ame='Keypoint controls', autogenerate=False)
File ~\anaconda3\Lib\site-packages\npe2\_command_registry.py:138, in CommandRegistry.get(self=<
npe2._command_registry.CommandRegistry object>, id='napari-deeplabcut.make_keypoint_controls')
136 if id not in self._commands: # sourcery skip
137 raise KeyError(f"command {id!r} not registered")
--> 138 return self._commands[id].resolve()
id = 'napari-deeplabcut.make_keypoint_controls'
self._commands = {'napari-deeplabcut.get_hdf_reader': CommandHandler(id='napari-deeplab
cut.get_hdf_reader', function=None, python_name='napari_deeplabcut._reader:get_hdf_reader'), 'n
apari-deeplabcut.get_image_reader': CommandHandler(id='napari-deeplabcut.get_image_reader', fun
ction=None, python_name='napari_deeplabcut._reader:get_image_reader'), 'napari-deeplabcut.get_v
ideo_reader': CommandHandler(id='napari-deeplabcut.get_video_reader', function=None, python_nam
e='napari_deeplabcut._reader:get_video_reader'), 'napari-deeplabcut.get_folder_parser': Command
Handler(id='napari-deeplabcut.get_folder_parser', function=None, python_name='napari_deeplabcut
._reader:get_folder_parser'), 'napari-deeplabcut.get_config_reader': CommandHandler(id='napari-
deeplabcut.get_config_reader', function=None, python_name='napari_deeplabcut._reader:get_config
_reader'), 'napari-deeplabcut.write_hdf': CommandHandler(id='napari-deeplabcut.write_hdf', func
tion=None, python_name='napari_deeplabcut._writer:write_hdf'), 'napari-deeplabcut.write_masks':
CommandHandler(id='napari-deeplabcut.write_masks', function=None, python_name='napari_deeplabc
ut._writer:write_masks'), 'napari-deeplabcut.make_keypoint_controls': CommandHandler(id='napari
-deeplabcut.make_keypoint_controls', function=None, python_name='napari_deeplabcut._widgets:Key
pointControls')}
self = <npe2._command_registry.CommandRegistry object at 0x000002360C7C83D0>
self._commands[id] = CommandHandler(id='napari-deeplabcut.make_keypoint_controls', func
tion=None, python_name='napari_deeplabcut._widgets:KeypointControls')
File ~\anaconda3\Lib\site-packages\npe2\_command_registry.py:34, in CommandHandler.resolve(self
=CommandHandler(id='napari-deeplabcut.make_keypoi...me='napari_deeplabcut._widgets:KeypointCont
rols'))
32 self.function = utils.import_python_name(self.python_name)
33 except Exception as e:
---> 34 raise RuntimeError(
35 f"Failed to import command at {self.python_name!r}: {e}"
36 ) from e
38 return self.function