File size: 996 Bytes
23e73f9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import importlib
from core.registry import METHOD_REGISTRY

def load_method(method_name: str):
    """
    按需懒加载目标插件,实现严格的运行期隔离。
    规避全量扫描导致的模块污染和 KeyError。
    """
    # 针对不符合 wrapper_{method} 命名规范的特例进行路由
    wrapper_router = {
        "vanilla_3dgs": "wrapper_vanilla",
        "tamgs": "wrapper_tamgs",
    }
    
    module_name = wrapper_router.get(method_name, f"wrapper_{method_name}")
    
    try:
        importlib.import_module(f".{module_name}", package=__name__)
    except ImportError as e:
        raise RuntimeError(f"❌ [Registry] 隔离挂载插件 {module_name} 失败,请检查其内部特异性依赖: {e}")
        
    if method_name not in METHOD_REGISTRY:
        raise KeyError(f"❌ [Registry] 模块 {module_name} 已成功导入,但未找到方法 '{method_name}',请检查 @register_method 装饰器。")
        
    return METHOD_REGISTRY[method_name]