Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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
|