Просмотр исходного кода

启动时会加载,但有错

zhch158_admin 1 месяц назад
Родитель
Сommit
7b5bf23530
1 измененных файлов с 48 добавлено и 0 удалено
  1. 48 0
      zhch/sitecustomize.start_error.py

+ 48 - 0
zhch/sitecustomize.start_error.py

@@ -0,0 +1,48 @@
+"""
+PaddleX 适配器自动加载钩子
+放置在 Python 搜索路径中,会在任何 Python 进程启动时自动执行
+"""
+import os
+import sys
+
+def load_paddlex_adapters():
+    """自动加载 PaddleX 适配器"""
+    # 只有设置了环境变量才激活
+    if os.getenv("PADDLEX_ENABLE_TABLE_ADAPTER", "").lower() not in ("true", "1", "yes"):
+        return
+    
+    try:
+        # 确保适配器路径在 sys.path
+        adapter_base = os.path.dirname(os.path.abspath(__file__))
+        adapters_path = os.path.join(adapter_base, 'adapters')
+        
+        if adapters_path not in sys.path:
+            sys.path.insert(0, adapters_path)
+        
+        # 延迟导入,只有在实际使用时才加载
+        def activate_adapter():
+            try:
+                from adapters.table_recognition_adapter import apply_table_recognition_adapter, restore_original_function
+                if apply_table_recognition_adapter():
+                    print("✅ [sitecustomize] Table recognition adapter activated")
+            except Exception as e:
+                print(f"⚠️  [sitecustomize] Failed to activate adapter: {e}")
+        
+        # 监听 PaddleX 导入事件
+        import importlib.abc
+        import importlib.machinery
+        
+        class AdapterLoader(importlib.abc.MetaPathFinder):
+            def find_module(self, fullname, path=None):
+                if fullname == "paddlex.inference.pipelines.table_recognition.pipeline_v2":
+                    # 在目标模块导入后激活适配器
+                    activate_adapter()
+                return None
+        
+        sys.meta_path.insert(0, AdapterLoader())
+        
+    except Exception as e:
+        print(f"⚠️  [sitecustomize] Error setting up adapter hook: {e}")
+
+# 自动执行
+load_paddlex_adapters()