File size: 2,152 Bytes
1bda3d6
 
 
f5c143b
c4ba937
 
 
 
 
 
1bda3d6
c4ba937
dd1c3bf
f5c143b
1bda3d6
c4ba937
1bda3d6
c4ba937
1bda3d6
c4ba937
 
 
1bda3d6
f5c143b
c4ba937
 
 
 
 
f5c143b
dd1c3bf
f5c143b
 
dd1c3bf
c4ba937
f5c143b
1bda3d6
f5c143b
 
 
1bda3d6
dd1c3bf
f5c143b
1bda3d6
c4ba937
 
 
 
 
 
 
1bda3d6
c4ba937
 
 
1bda3d6
c4ba937
1bda3d6
c4ba937
1bda3d6
c4ba937
1bda3d6
 
f5c143b
 
 
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
56
57
58
59
60
61
62
63
64
65
66
67
# ==========================================================
# FILE: install.py
# ==========================================================
#!/usr/bin/env python3
import os, sys, subprocess, shutil, platform, venv

ENV_DIR   = "venv"
CACHE_DIR = "hf_download"
MODEL_ID  = "hunyuanvideo-community/HunyuanVideo"

def run(cmd: list[str]) -> None:
    print("❯", *cmd, flush=True)
    subprocess.check_call(cmd)

def ensure_python() -> None:
    if sys.version_info < (3, 8):
        sys.exit("Python 3.8 or newer required.")

def cuda_info() -> None:
    if shutil.which("nvidia-smi"):
        run(["nvidia-smi", "--query-gpu=name,memory.total,driver_version", "--format=csv"])
    else:
        print("⚠️  CUDA GPU not detected – falling back to CPU (slow).")

def create_venv() -> tuple[str, str]:
    if not os.path.isdir(ENV_DIR):
        print("📦 Creating virtual environment…")
        venv.create(ENV_DIR, with_pip=True)
    if platform.system() == "Windows":
        pip = os.path.join(ENV_DIR, "Scripts", "pip.exe")
        py  = os.path.join(ENV_DIR, "Scripts", "python.exe")
    else:
        pip = os.path.join(ENV_DIR, "bin", "pip")
        py  = os.path.join(ENV_DIR, "bin", "python")
    return pip, py

def install_reqs(pip: str) -> None:
    run([pip, "install", "--upgrade", "pip"])
    run([pip, "install", "-r", "requirements.txt"])

def hf_login(py: str) -> None:
    run([py, "-c", "from diffusers_helper.hf_login import login; login()"])

def cache_model(py: str) -> None:
    os.makedirs(CACHE_DIR, exist_ok=True)
    code = (
        f"from huggingface_hub import snapshot_download;"
        f"snapshot_download('{MODEL_ID}', cache_dir='{CACHE_DIR}', resume_download=True)"
    )
    run([py, "-c", code])

def main() -> None:
    ensure_python()
    cuda_info()
    pip, py = create_venv()
    install_reqs(pip)
    hf_login(py)
    cache_model(py)
    if platform.system() == "Windows":
        print(f"\nActivate: {ENV_DIR}\\Scripts\\Activate.ps1")
    else:
        print(f"\nActivate: source {ENV_DIR}/bin/activate")
    print("Run:      python ghostpack.py --inbrowser")

if __name__ == "__main__":
    main()