HongshengY commited on
Commit
c2d074e
·
verified ·
1 Parent(s): 62e2540

Create loader.py

Browse files
Files changed (1) hide show
  1. loader.py +59 -0
loader.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import subprocess
3
+ import sys
4
+ from huggingface_hub import snapshot_download
5
+
6
+ # ================= 配置部分 =================
7
+ # 填写你的私有仓库地址,格式:用户名/仓库名
8
+ PRIVATE_REPO_ID = "HongshengY/NeuralSketch2Surf"
9
+
10
+ # 获取 Secret Token (需要在 Space Settings -> Secrets 中设置 HF_TOKEN)
11
+ HF_TOKEN = os.environ.get("HF_TOKEN")
12
+
13
+ def main():
14
+ if not HF_TOKEN:
15
+ print("❌ 错误: 未检测到 HF_TOKEN。请在 Settings -> Secrets 中添加。")
16
+ sys.exit(1)
17
+
18
+ print(f"🚀 正在从私有仓库 {PRIVATE_REPO_ID} 加载代码...")
19
+
20
+ try:
21
+ # 1. 下载私有仓库的所有文件到当前目录 (/app)
22
+ snapshot_download(
23
+ repo_id=PRIVATE_REPO_ID,
24
+ repo_type="space",
25
+ local_dir=".",
26
+ token=HF_TOKEN,
27
+ # 排除不必要的文件以加快下载
28
+ ignore_patterns=[".gitattributes", "README.md", ".git/*"]
29
+ )
30
+ print("✅ 代码与模型下载完成!")
31
+
32
+ # 2. 安装依赖
33
+ # 虽然 Dockerfile 会预装一些,但为了确保版本匹配,还是跑一下 requirements.txt
34
+ if os.path.exists("backend/requirements.txt"):
35
+ print("📦 正在检查并安装 backend/requirements.txt...")
36
+ subprocess.run([sys.executable, "-m", "pip", "install", "-r", "backend/requirements.txt"], check=True)
37
+
38
+ # 3. 启动 FastAPI 应用
39
+ # 对应你 README 中的启动命令:uvicorn backend.server:app --host 0.0.0.0 --port 7860
40
+ print("🔥 正在启动 NeuralSketch2Surf Web...")
41
+
42
+ # 构造启动命令
43
+ # 注意:Hugging Face Spaces 强制要求监听 7860 端口
44
+ cmd = [
45
+ "uvicorn",
46
+ "backend.server:app",
47
+ "--host", "0.0.0.0",
48
+ "--port", "7860"
49
+ ]
50
+
51
+ # 使用 exec 替换当前进程,这样 uvicorn 就会成为 PID 1,接收所有信号
52
+ os.execvp("uvicorn", cmd)
53
+
54
+ except Exception as e:
55
+ print(f"❌ 发生错误: {e}")
56
+ sys.exit(1)
57
+
58
+ if __name__ == "__main__":
59
+ main()