File size: 1,901 Bytes
20a0715
 
2b14d3b
20a0715
2b14d3b
 
20a0715
2b14d3b
20a0715
 
2b14d3b
 
20a0715
 
 
 
 
 
 
2b14d3b
 
 
 
20a0715
2b14d3b
20a0715
2b14d3b
20a0715
7e76855
2b14d3b
7e76855
2b14d3b
7e76855
20a0715
 
 
 
 
 
 
 
 
 
 
2b14d3b
20a0715
 
 
 
 
 
2b14d3b
 
 
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# app_loader.py  —— 建议版本(带 debug log)

import os
import sys
from pathlib import Path
from huggingface_hub import snapshot_download
import importlib.util

# 这里用你的真实私有 model 仓库 ID
PRIVATE_REPO_ID = "Bing91/my-trading-web-app"  # 按实际改

def main():
    print("[loader] starting loader...", flush=True)

    token = os.environ.get("HF_TOKEN")
    if not token:
        raise RuntimeError("环境变量 HF_TOKEN 未设置(Space 的 Secrets 里要配置 HF_TOKEN)")

    print(f"[loader] using PRIVATE_REPO_ID={PRIVATE_REPO_ID}", flush=True)

    local_dir = snapshot_download(
        repo_id=PRIVATE_REPO_ID,
        token=token,
        repo_type="model",
    )
    print(f"[loader] snapshot downloaded to: {local_dir}", flush=True)

    # 给 app.py 里用 hf_hub_download 的代码用(未来你换回大 app 时要用到)
    os.environ.setdefault("HUGGINGFACEHUB_API_TOKEN", token)

    app_path = Path(local_dir) / "app.py"
    if not app_path.exists():
        children = [p.name for p in Path(local_dir).iterdir()]
        raise FileNotFoundError(f"在 {local_dir} 下找不到 app.py,当前文件有: {children}")

    print(f"[loader] loading module from: {app_path}", flush=True)

    # 像普通模块一样 import,然后调用 main()
    spec = importlib.util.spec_from_file_location("private_app", app_path)
    module = importlib.util.module_from_spec(spec)
    sys.modules["private_app"] = module
    spec.loader.exec_module(module)

    print("[loader] module imported, checking main() ...", flush=True)

    if hasattr(module, "main"):
        print("[loader] calling main() ...", flush=True)
        module.main()
        print("[loader] main() returned (this usually shouldn't happen with Gradio)", flush=True)
    else:
        raise RuntimeError("app.py 中没有找到 main() 函数")

if __name__ == "__main__":
    main()