AIMoCap / app.py
animtex's picture
Publish compiled HF Space artifact
e8d584c
Raw
History Blame Contribute Delete
1.8 kB
from __future__ import annotations
import importlib.util
import os
import sys
from pathlib import Path
ROOT = Path(__file__).parent
BUILD_ROOT = ROOT / "build" / "pyc"
ASSET_ROOT = ROOT / "assets"
COMPILED_ASSET_ROOT = BUILD_ROOT / "assets"
for entry in [str(BUILD_ROOT), str(ROOT)]:
if entry not in sys.path:
sys.path.insert(0, entry)
if ASSET_ROOT.exists() and not COMPILED_ASSET_ROOT.exists():
try:
COMPILED_ASSET_ROOT.parent.mkdir(parents=True, exist_ok=True)
COMPILED_ASSET_ROOT.symlink_to(ASSET_ROOT, target_is_directory=True)
except OSError:
import shutil
shutil.copytree(ASSET_ROOT, COMPILED_ASSET_ROOT, dirs_exist_ok=True)
compiled = BUILD_ROOT / "space_app_impl.pyc"
if not compiled.exists():
raise RuntimeError("Missing compiled HF Space runtime: build/pyc/space_app_impl.pyc")
spec = importlib.util.spec_from_file_location("space_app_impl_compiled", compiled)
if spec is None or spec.loader is None:
raise RuntimeError("Failed to load compiled HF Space runtime.")
module = importlib.util.module_from_spec(spec)
try:
spec.loader.exec_module(module)
except ImportError as exc:
raise RuntimeError(
"Failed to load compiled HF Space runtime. "
"The published .pyc files were likely built with a different Python version or "
"the runtime dependencies are missing. Rebuild .public-dist with Python 3.13 "
"and ensure requirements are installed."
) from exc
app = getattr(module, "app", None)
demo = getattr(module, "demo", None)
if app is None:
raise RuntimeError("Compiled HF Space runtime did not expose 'app'.")
if __name__ == "__main__":
import uvicorn
port = int(os.environ.get("PORT", "7860"))
uvicorn.run(app, host="0.0.0.0", port=port, log_level="info")