使用python在blender中注销并删除插件不会从菜单中删除该项目

Posted

技术标签:

【中文标题】使用python在blender中注销并删除插件不会从菜单中删除该项目【英文标题】:unregister and remove addon in blender with python does not remove the item from menu 【发布时间】:2016-03-31 14:40:55 【问题描述】:

我已经下载了一些网格导出器脚本来学习如何在 python 中为 blender(2.6.3) 编写导出脚本。

脚本遵循标准注册/注销,以便注册或注销脚本。

### REGISTER ###

def menu_func(self, context):
    self.layout.operator(Export_objc.bl_idname, text="Objective-C Header (.h)")

def register():
    bpy.utils.register_module(__name__)

    bpy.types.INFO_MT_file_export.append(menu_func)

def unregister():
    bpy.utils.unregister_module(__name__)

    bpy.types.INFO_MT_file_export.remove(menu_func)

###if __name__ == "__main__":
### register()
unregister()

问题是,当我使用 runScript 从文本编辑器运行脚本时(在将其更改为在运行时取消注册之后)它会删除脚本,但会在导出菜单中留下无法删除的剩余内容,我无法删除。 如果我再次运行注册,它会将非活动菜单选项恢复为可单击的导出器菜单项,但此外它还会添加菜单项的另一个副本。 我想继续注册和取消注册的原因主要是因为我想进行更改并测试它们...... 也许我应该直接运行该功能而无需注册,但即使现在我的导出菜单中有这个:

如何删除这些项目并且在导出菜单中没有很多版本的脚本(取决于我是否进行了更改),当我摆弄脚本时,我是否应该只放置函数而不是注册/取消注册和试试看?

【问题讨论】:

【参考方案1】:

嗯,我找到了一个可行的方法......

如果您按“F8”,它将重新加载所有插件并删除“死”菜单项。 这解决了同一个插件的多次添加。

所以现在如果我想更改插件并对其进行测试,我会这样做:

    使用注销运行脚本 按 F8 使用寄存器运行脚本

这就是我更新插件的方式,还有从导出/导入菜单实际运行它的附加步骤。

如果您有更简单的方法来测试插件的更改,请告诉我...

【讨论】:

【参考方案2】:

我不是 100% 确定原因,但它与运行插件脚本有关,该脚本在搅拌机的文本编辑器中添加菜单项。甚至 blender 的模板脚本也做同样的事情。

我认为最好的解决方案是像真正的插件一样使用它 - 将其保存到磁盘并在插件首选项中启用/禁用它。您可以将其保存到已安装的插件文件夹中,在您的user settings folder 中,或者创建一个文件夹并设置file path for scripts。您也可以使用插件首选项中的Install from File 按钮。

【讨论】:

以上是关于使用python在blender中注销并删除插件不会从菜单中删除该项目的主要内容,如果未能解决你的问题,请参考以下文章

blender插件怎么用?blender怎么安装插件?求教程!

在 Blender 的 Python 中安装 Dlib 时出错

Blender Python 对象“分组”

如何在 Blender 中使用 python 创建无缝背景?

Python:将搅拌机与 WinTracker 2 连接

blender 如何安装F-Spy