| import os | |
| import importlib.util | |
| import sys | |
| from scripts.iib.tool import cwd | |
| def load_plugins(plugin_dir): | |
| plugins = [] | |
| for filename in os.listdir(plugin_dir): | |
| main_module_path = os.path.join(plugin_dir, filename, 'main.py') | |
| if not os.path.exists(main_module_path): | |
| continue | |
| spec = importlib.util.spec_from_file_location('main', main_module_path) | |
| module = importlib.util.module_from_spec(spec) | |
| spec.loader.exec_module(module) | |
| plugins.append(module) | |
| return plugins | |
| plugin_insts = [] | |
| plugin_inst_map = {} | |
| # 使用插件 | |
| try: | |
| plugin_dir = os.path.normpath(os.path.join(cwd, 'plugins')) | |
| plugins = load_plugins(plugin_dir) | |
| sys.path.append(plugin_dir) | |
| for plugin in plugins: | |
| try: | |
| res = plugin.Main() | |
| plugin_insts.append(res) | |
| plugin_inst_map[res.source_identifier] = res | |
| print(f'IIB loaded plugin: {res.name}') | |
| except Exception as e: | |
| print(f'Error running plugin {plugin.__class__.__name__}: {e}') | |
| except Exception as e: | |
| print(f'Error loading plugins: {e}') |