theYiran commited on
Commit
3d325b7
·
verified ·
1 Parent(s): 2fc3bdb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -1
app.py CHANGED
@@ -1,7 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import spaces
2
  import gradio as gr
3
  import os
4
- import sys
5
  import subprocess
6
  import importlib
7
  import site
 
1
+ import sys
2
+ from types import ModuleType
3
+
4
+ # --- 🧪 终极暴力:内存级伪造 diso 包 ---
5
+ def mock_diso():
6
+ print("🧪 Creating emergency mock for diso...")
7
+
8
+ # 1. 创建基础模块对象
9
+ diso = ModuleType("diso")
10
+ # 2. 伪造 DiffDMC 类
11
+ # PartCrafter 调用它通常是为了从网格提取几何,我们给它一个空的实现
12
+ # 如果后续运行报错缺少某个方法,我们再补。通常它是被导入但未被深度调用。
13
+ class FakeDiffDMC:
14
+ def __init__(self, *args, **kwargs): pass
15
+ def __call__(self, *args, **kwargs): return None
16
+
17
+ diso.DiffDMC = FakeDiffDMC
18
+
19
+ # 3. 注入系统路径,防止其他地方再次触发 import
20
+ sys.modules["diso"] = diso
21
+ # 针对 diso._C 的报错,也伪造一个空模块
22
+ sys.modules["diso._C"] = ModuleType("diso._C")
23
+
24
+ print("✅ diso has been mocked successfully!")
25
+
26
+ mock_diso()
27
+
28
+ # --- 正常的安装流程 (保留已成功的 scatter/sparse) ---
29
+ def install_essential_packages():
30
+ # scatter 等包你已经安装成功了,这里只做一次性快速确认
31
+ subprocess.run([
32
+ sys.executable, "-m", "pip", "install",
33
+ "torch-scatter", "torch-sparse", "torch-cluster",
34
+ "-f", "https://data.pyg.org/whl/torch-2.4.0+cu121.html"
35
+ ])
36
+ # 安装剩下的轻量级包
37
+ subprocess.run([sys.executable, "-m", "pip", "install", "pyrender", "pyopengl==3.1.0", "pyyaml", "-q"])
38
+
39
+ install_essential_packages()
40
+
41
+ # --- 现在可以安全地 import 业务代码了 ---
42
+ from src.pipelines.pipeline_partcrafter import PartCrafterPipeline
43
+ # ... 后续代码 ...
44
+
45
  import spaces
46
  import gradio as gr
47
  import os
48
+ # import sys
49
  import subprocess
50
  import importlib
51
  import site