You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blender Python开发中导入模块全部类同时强制重载模块的问题

错误原因
  • from .MyPlugin import *语法只会将MyPlugin模块下的成员(类、函数、变量等)导入当前文件的命名空间,不会将MyPlugin模块本身作为变量引入,因此调用reload(MyPlugin)时会触发MyPlugin is not defined报错
  • reload()方法仅支持接收模块对象作为入参,无法直接重载单个类对象,因此单独重载类的方案不可行
修复方案

调整导入和重载的执行顺序:先导入模块本身到当前命名空间,完成模块重载更新缓存后,再导入模块内的类成员,确保拿到的是最新的类定义。
修复后的代码如下:

from importlib import reload
# 先导入模块本身
from . import MyPlugin
# 重载模块清空缓存
reload(MyPlugin)
# 从重载后的模块内导入所有类
from .MyPlugin import *

classes = [ClassA, ClassB, ClassC]
# 此处省略每个类的注册逻辑

如果你的MyPlugin模块下还嵌套了其他子模块需要同步重载,可以在MyPlugin目录的__init__.py中按照相同逻辑处理子模块的重载即可。

内容的提问来源于stack exchange,提问作者max pleaner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:57:04