File size: 2,041 Bytes
f5c143b
 
c4ba937
 
 
 
 
 
 
 
dd1c3bf
f5c143b
c4ba937
 
 
 
 
 
 
 
 
f5c143b
c4ba937
 
 
 
 
f5c143b
dd1c3bf
f5c143b
 
dd1c3bf
c4ba937
f5c143b
c4ba937
f5c143b
 
 
c4ba937
dd1c3bf
f5c143b
c4ba937
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# 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]):
    print("❯", *cmd, flush=True)
    subprocess.check_call(cmd)

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

def cuda_info():
    if shutil.which("nvidia-smi"):
        run(["nvidia-smi", "--query-gpu=name,memory.total,driver_version", "--format=csv"])
    else:
        print("⚠️  CUDA GPU not found – fall-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_deps(pip: str):
    run([pip, "install", "--upgrade", "pip"])
    run([pip, "install", "-r", "requirements.txt"])

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

def download_model(py: str):
    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():
    ensure_python()
    cuda_info()
    pip, py = create_venv()
    install_deps(pip)
    hf_login(py)
    download_model(py)
    print("\n✅ Setup complete. Activate with:")
    if platform.system() == "Windows":
        print(f"   {ENV_DIR}\\Scripts\\Activate.ps1 && python ghostpack_main_fixed.py --inbrowser")
    else:
        print(f"   source {ENV_DIR}/bin/activate && python ghostpack_main_fixed.py --inbrowser")

if __name__ == "__main__":
    main()