Spaces:
Sleeping
Sleeping
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()
|