Spaces:
Build error
Build error
File size: 5,037 Bytes
30a181f e225b66 f4bfdc6 30a181f f4bfdc6 30a181f 9bc243c 30a181f 9bc243c 30a181f 9bc243c 30a181f 9bc243c 30a181f f4bfdc6 30a181f 9bc243c 30a181f f4bfdc6 9bc243c 30a181f f4bfdc6 30a181f 9bc243c f4bfdc6 30a181f 9bc243c 30a181f 9bc243c 30a181f 9bc243c 30a181f f4bfdc6 9bc243c f4bfdc6 9bc243c 30a181f f4bfdc6 30a181f f4bfdc6 30a181f f4bfdc6 30a181f f4bfdc6 30a181f f4bfdc6 30a181f 90b4970 30a181f | 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | # app.py – Fooocus + Pony Diffusion V6 XL (Hugging Face Spaces ready)
# Komplett, standalone, mit moderner Torch-Version und Fehlerbehandlung
import os
import subprocess
import time
import threading
import sys
from pathlib import Path
from huggingface_hub import hf_hub_download
# ─── KONFIGURATION ──────────────────────────────────────────────────────────────
MODEL_NAME = "Pony Diffusion V6 XL"
MODEL_REPO = "Lykon/Pony_Diffusion_V6_XL"
MODEL_FILE = "ponyDiffusionV6XL_v6StartWithThisOne.safetensors"
# VAE (sehr empfohlen für bessere Qualität)
VAE_REPO = "stabilityai/sd-vae-ft-mse-original"
VAE_FILE = "vae-ft-mse-840000-ema-pruned.safetensors"
# Fooocus-Repository (aktuellster Branch)
FOOOCUS_REPO = "https://github.com/lllyasviel/Fooocus.git"
# ─── HELPER-FUNKTIONEN ──────────────────────────────────────────────────────────
def run_cmd(cmd, error_msg="Fehler beim Ausführen"):
"""Wrapper für subprocess mit besserer Fehlermeldung"""
try:
print(f"[CMD] {' '.join(cmd)}")
subprocess.run(cmd, check=True)
except subprocess.CalledProcessError as e:
print(f"{error_msg}: {e}")
sys.exit(1)
def install_fooocus():
"""Fooocus klonen + Abhängigkeiten installieren"""
if Path("Fooocus").exists():
print("Fooocus Ordner existiert bereits → überspringe Klonen")
else:
print("→ Klone Fooocus Repository ...")
run_cmd(["git", "clone", FOOOCUS_REPO])
os.chdir("Fooocus")
print("→ Aktualisiere pip & wheel ...")
run_cmd(["pip", "install", "--upgrade", "pip", "wheel", "setuptools"])
print("→ Installiere aktuelle Torch-Version (CPU) ...")
run_cmd([
"pip", "install",
"torch==2.5.0", "torchvision==0.20.0",
"--index-url", "https://download.pytorch.org/whl/cpu",
"--no-cache-dir"
])
print("→ Installiere Fooocus Abhängigkeiten ...")
run_cmd(["pip", "install", "-r", "requirements_versions.txt", "--no-cache-dir"])
def download_model():
"""Model und VAE laden – nur wenn nicht vorhanden"""
checkpoints = Path("models/checkpoints")
checkpoints.mkdir(parents=True, exist_ok=True)
model_path = checkpoints / MODEL_FILE
if not model_path.exists():
print(f"→ Lade {MODEL_NAME} herunter ...")
hf_hub_download(
repo_id=MODEL_REPO,
filename=MODEL_FILE,
local_dir=checkpoints,
local_dir_use_symlinks=False
)
else:
print(f"{MODEL_FILE} bereits vorhanden → überspringe Download")
vae_dir = Path("models/vae")
vae_dir.mkdir(parents=True, exist_ok=True)
vae_path = vae_dir / VAE_FILE
if not vae_path.exists():
print("→ Lade empfohlene VAE herunter ...")
hf_hub_download(
repo_id=VAE_REPO,
filename=VAE_FILE,
local_dir=vae_dir,
local_dir_use_symlinks=False
)
else:
print("VAE bereits vorhanden")
def start_fooocus():
"""Fooocus mit sinnvollen Parametern starten"""
cmd = [
"python", "entry_with_update.py",
"--share", # öffentlicher Link
"--preset", "anime", # Pony V6 ist anime-optimiert
"--disable-offload-from-vram",
"--always-high-vram",
"--theme", "dark",
"--output-dir", "/tmp/outputs",
"--disable-image-logger",
"--listen"
]
print("→ Starte Fooocus ... (kann 60–300 Sekunden dauern)")
print("Der öffentliche Link erscheint im Build-Log oben[](https://*.gradio.live)")
subprocess.Popen(cmd)
# ─── HAUPTPROGRAMM ──────────────────────────────────────────────────────────────
if __name__ == "__main__":
print(f"=== Fooocus Bildgenerator – {MODEL_NAME} ===")
print("Hugging Face Spaces – CPU-kompatibel – zensurarm")
print("─────────────────────────────────────────────")
try:
install_fooocus()
download_model()
# Fooocus im Hintergrund starten
threading.Thread(target=start_fooocus, daemon=True).start()
print("\n" + "═"*70)
print("Fooocus läuft jetzt.")
print("Warte bitte – der öffentliche Gradio-Link erscheint im Build-Log oben")
print("Format: https://xxxxxx.gradio.live")
print("Öffne diesen Link im Browser – das ist deine App!")
print("═"*70 + "\n")
# Container am Leben halten
while True:
time.sleep(300)
except Exception as e:
print(f"KRITISCHER FEHLER: {e}")
sys.exit(1) |