Blender Python -在导入模块的所有类时强制重载模块

wlzqhblo  于 2022-12-30  发布在  Python
关注(0)|答案(2)|浏览(157)

我正在使用Python/Blender进行开发,这里有两个需求:
1.从我的模块中导入所有单独的类(因为它们都必须在blender中注册)
1.每次执行脚本时重新加载模块本身(为了防止在开发插件时缓存,请按“reload scripts”)
目前我正在执行此操作(在__init__.py中):

from importlib import reload
from .MyPlugin import *

reload(MyPlugin)

classes = [ClassA, ClassB, ClassC]
# register each class, not shown here

但是,reload(MyPlugin)行导致错误:“我的插件未定义”。
最初,我尝试重新加载每个类,但它引发了一个错误,即reload需要一个模块。

r6hnlfcb

r6hnlfcb1#

一些同事帮我找到了答案,在__init__.py中,最后的结果是:

from importlib import reload

if "MyModule" in locals():
    reload(MyModule)
else:
   import MyModule

from .MyModule import *

详情如下:https://blenderartists.org/t/how-to-reload-add-on-code/1202715/2

zzlelutf

zzlelutf2#

这适用于旧版本(测试与2.79)重新启动第一!

del sys.modules['foo']    
from foo import *

相关问题