MoCapAnythingV2 / app.py
kehong's picture
Rebuild: pick up asyncio-noise silence (PR #31)
86b0c1b verified
Raw
History Blame Contribute Delete
1.55 kB
"""MoCapAnything V2 — HuggingFace Space (ZeroGPU) thin shell.
Clones the GitHub repo and runs its unified demo app (demo/app.py). That app auto-
detects the ZeroGPU environment (`import spaces`), loads models on CPU at import,
downloads weights + demo data from the Hub, lazy-fetches character meshes per species,
and serves the interactive demo — the SAME code as the local demo, so the two never
drift apart.
Code: https://github.com/phongdaot/MocapAnything
"""
import os
import sys
import subprocess
ROOT = os.path.dirname(os.path.abspath(__file__))
CODE = os.path.join(ROOT, "MocapAnything")
# code from GitHub (once per container)
if not os.path.isdir(os.path.join(CODE, "inference")):
subprocess.run(["git", "clone", "--depth", "1",
"https://github.com/phongdaot/MocapAnything.git", CODE], check=True)
sys.path.insert(0, CODE)
sys.path.insert(0, os.path.join(CODE, "demo"))
os.chdir(CODE)
# Run the unified demo app IN THIS __main__ module (not a separate exec dict) so the
# top-level `demo` Blocks lands in __main__ — gradio's Spaces reloader/SSR looks for
# `demo` there; a separate dict hides it ("Launching demo not found in __main__") and
# the fallback wires events to the wrong instance → Run errors. Fix __file__ so the
# app's REPO = dirname(dirname(__file__)) still resolves to the cloned repo.
app_path = os.path.join(CODE, "demo", "app.py")
globals()["__file__"] = app_path
exec(compile(open(app_path).read(), app_path, "exec"), globals())
# rebuild: pick up asyncio-noise silence (PR #31)