GDQuest / blender-power-sequencer

Add-on for video editing in Blender 3D: edit videos faster! Included in Blender 2.81+
https://gdquest.com/blender/power-sequencer/
GNU General Public License v3.0
708 stars 58 forks source link

can't install power-sequencer 2.0.1 ValueError: register_class(...): already registered #464

Closed kbex1 closed 2 years ago

kbex1 commented 2 years ago

I'm submitting a...

[X] Bug report.

Bug report

What is the current behavior? i'm having an issue to install power-sequencer 2.0.1 on a fresh 3.2 blender on linux. i've deleted power-sequencer 1.5 that comes with blender and installed 2.0.1. then i'm getting a :

ValueError: register_class(...): already registered as a subclass 'POWER_SEQUENCER_MT_contextual'

What is the expected behavior? replacing the version of power-sequencer should just load up

Tell us the steps to reproduce the bug, and if possible share a minimal demo of the problem.

  1. download PS 2.0.1 from the repo
  2. remove PS1.5 folder from ../blender-3.2.0-linux-x64/3.2/scripts/addons/
  3. click install from blender preferences
  4. get error

Traceback

Traceback (most recent call last):
  File "/home/username/blender-3.2.0-linux-x64/3.2/scripts/modules/addon_utils.py", line 371, in enable
    mod.register()
  File "/home/username/blender-3.2.0-linux-x64/3.2/scripts/addons/power_sequencer/__init__.py", line 68, in register
    classes_operator = get_operator_classes()
  File "/home/username/blender-3.2.0-linux-x64/3.2/scripts/addons/power_sequencer/operators/__init__.py", line 30, in get_operator_classes
    module = importlib.import_module(path, package="blender_power_sequencer.operators")
  File "/home/username/blender-3.2.0-linux-x64/3.2/python/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'blender_power_sequencer'
Traceback (most recent call last):
  File "/home/username/blender-3.2.0-linux-x64/3.2/scripts/modules/addon_utils.py", line 371, in enable
    mod.register()
  File "/home/username/.config/blender/3.2/scripts/addons/power_sequencer/__init__.py", line 65, in register
    register_ui()
  File "/home/username/blender-3.2.0-linux-x64/3.2/scripts/modules/bpy/utils/__init__.py", line 744, in register
    register_class(cls)
ValueError: register_class(...): already registered as a subclass 'POWER_SEQUENCER_MT_contextual'
NathanLovato commented 2 years ago

Did you have Blender running with the addon active when doing that? If you're going to remove the built-in version, you need to close blender, remove the addon, then open blender and import the new one. Otherwise it's normal, you already have operators and all from the addon in memory and you're trying to register a copy of them.

Are you still getting an error when doing that?

kbex1 commented 2 years ago

just to be sure, i've removed power-sequencer 1.5 folder from blender directory with blender closed. opened blender to make sure the add-on in not on the list. clicked install (with 2.0.1 release file power_sequencer.zip) and ticked the box to enable it.

same error :

Traceback (most recent call last):
  File "/home/user/blender-3.2.0-linux-x64/3.2/scripts/modules/addon_utils.py", line 371, in enable
    mod.register()
  File "/home/user/.config/blender/3.2/scripts/addons/power_sequencer/__init__.py", line 68, in register
    classes_operator = get_operator_classes()
  File "/home/user/.config/blender/3.2/scripts/addons/power_sequencer/operators/__init__.py", line 30, in get_operator_classes
    module = importlib.import_module(path, package="blender_power_sequencer.operators")
  File "/home/user/blender-3.2.0-linux-x64/3.2/python/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'blender_power_sequencer'

and the box stays unticked when i tick the box again i receive

Traceback (most recent call last):
  File "/home/user/blender-3.2.0-linux-x64/3.2/scripts/modules/addon_utils.py", line 371, in enable
    mod.register()
  File "/home/user/.config/blender/3.2/scripts/addons/power_sequencer/__init__.py", line 65, in register
    register_ui()
  File "/home/user/blender-3.2.0-linux-x64/3.2/scripts/modules/bpy/utils/__init__.py", line 744, in register
    register_class(cls)
ValueError: register_class(...): already registered as a subclass 'POWER_SEQUENCER_MT_contextual'

if i put the 1.5 folder back in blender it works fine. the blender version is fresh from the site. i just extracted it. didn't add anything else.

NathanLovato commented 2 years ago

Okay got it, it's a naming issue.

For now, you need to rename the v2.0.1 addon's folder to blender_power_sequencer (or the zip file to blender_power_sequencer.zip). That should do the trick.

Then I'm gonna cut support for installing from this repository directly and update the version in blender for the next release, and only update there from there on. Having a bleeding edge and a builtin version hasn't worked great.

NathanLovato commented 2 years ago

If that does the job for you I'll let you close the issue

kbex1 commented 2 years ago

yep, changing the addon folder name manually to blender_power_sequencer does the trick. tried it first with changing zip name and using the install option but the resulting name in the addon folder was still problematic. so i went for the manual naming.

NathanLovato commented 2 years ago

Thanks for letting me know