采用方法3的方式, 可以在测试中保证重新加载子模块, 是想要的方式, 代码如下:
_qk_locals = locals()
def register():
if "bpy" in _qk_locals:
print(">>> plugin‘s submodules reload")
from importlib import reload
_modules_loaded[:] = [reload(val) for val in _modules_loaded]
del reload
from bpy.utils import register_class
for mod in _modules_loaded:
for cls in mod.classes:
print(‘>>> register: ‘, cls.__name__)
register_class(cls)
本分析基于Blender2.79b.
C:\Users\yaoyu\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\qk_modeler
__init__.py
文件中插入输出代码, 查看效果if "bpy" in locals():
print(‘reload...‘)
from importlib import reload
_modules_loaded[:] = [reload(val) for val in _modules_loaded]
del reload
"bpy" in locals() -> False
"bpy" in locals() -> True
在__init__.py代码修改之后, 模块第一次重加载时会触发.
_qk_locals = locals()
def register():
if "bpy" in _qk_locals:
print(">>> plugin‘s submodules reload")
from importlib import reload
_modules_loaded[:] = [reload(val) for val in _modules_loaded]
del reload
from bpy.utils import register_class
for mod in _modules_loaded:
for cls in mod.classes:
print(‘>>> register: ‘, cls.__name__)
register_class(cls)
"bpy" in _qk_locals -> True
原文:https://www.cnblogs.com/yaoyu126/p/9343251.html