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