import importlib import os import pkgutil import sys def load_all_plugins(): """ 扫描并加载当前包下所有的插件(支持文件和文件夹) 该函数会遍历当前目录下的所有模块: 1. 如果模块已加载,则执行 reload 操作(用于热重载) 2. 如果模块未加载,则执行 import 操作 加载过程中会打印详细的日志信息。 """ package_name = __package__ package_path = [os.path.dirname(__file__)] print(f" 正在从 {package_name} 加载插件...") for loader, module_name, is_pkg in pkgutil.iter_modules(package_path): full_module_name = f"{package_name}.{module_name}" try: if full_module_name in sys.modules: importlib.reload(sys.modules[full_module_name]) action = "重载" else: importlib.import_module(full_module_name) action = "加载" type_str = "包" if is_pkg else "文件" print(f" [{type_str}] 成功{action}: {module_name}") except Exception as e: print(f" {action if 'action' in locals() else '加载'}插件 {module_name} 失败: {e}") load_all_plugins()