File size: 3,802 Bytes
eadf89d
e43df9f
de3a711
eaf89d5
6613451
eadf89d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6613451
e43df9f
 
 
 
eadf89d
 
 
 
 
 
 
 
 
 
3f7e7e6
61bf87d
eadf89d
 
 
 
 
 
 
 
 
 
3f7e7e6
d3d8124
54840b1
 
d3d8124
eadf89d
 
29fefec
eadf89d
30dcf91
54840b1
 
 
 
 
 
 
 
 
eadf89d
 
54840b1
 
 
 
 
 
 
d3d8124
0a4b91b
 
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
# app.py
import sys
from pathlib import Path
import os
import subprocess
# import pkg_resources # Comentado o eliminado, ya que dio info enga帽osa

# --- CR脥TICO: L脥NEA PARA FORZAR LA VERSI脫N DE GRADIO Y GRADIO-CLIENT CORRECTA ---
print("INFO (app.py): Intentando forzar la instalaci贸n de Gradio 4.29.0 y su cliente compatible...")
GRADIO_TARGET_VERSION = "4.29.0"
GRADIO_CLIENT_TARGET_VERSION = "0.16.1" # Cliente para Gradio 4.29.0
try:
    # Desinstalar cualquier versi贸n existente de gradio y gradio_client
    # Redirigir stdout/stderr a DEVNULL para una salida m谩s limpia si tienen 茅xito
    subprocess.check_call([sys.executable, "-m", "pip", "uninstall", "-y", "gradio", "gradio-client"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
    print(f"INFO (app.py): Intentando instalar gradio=={GRADIO_TARGET_VERSION} y gradio-client=={GRADIO_CLIENT_TARGET_VERSION}...")
    subprocess.check_call([sys.executable, "-m", "pip", "install", f"gradio=={GRADIO_TARGET_VERSION}", f"gradio-client=={GRADIO_CLIENT_TARGET_VERSION}"])
    print(f"INFO (app.py): Instalaci贸n forzada de Gradio {GRADIO_TARGET_VERSION} y Gradio-Client {GRADIO_CLIENT_TARGET_VERSION} solicitada.")
            
except subprocess.CalledProcessError as e:
    print(f"ERROR (app.py): Fallo al forzar la instalaci贸n de Gradio: {e}")
    print("Por favor, aseg煤rate de que no hay otras dependencias conflictivas y reintenta despu茅s de una limpieza profunda del entorno.")
    # Considera no salir si el error es solo por "ya desinstalado"
    # sys.exit(1) 
# --- FIN DE L脥NEA CR脥TICA ---

CURRENT_DIR = Path(__file__).parent
if str(CURRENT_DIR) not in sys.path:
    sys.path.insert(0, str(CURRENT_DIR))

try:
    import decorators 
    # Usa tu UI.py COMPLEJA ahora si la UI simplificada funcion贸.
    # Si la UI simplificada es la que est谩 en uso, este import es correcto.
    from UI import create_interface 
    import interface as app_interface_module
except ImportError as e:
    print(f"Error cr铆tico de importaci贸n en app.py: {e}. Aseg煤rate de que todos los archivos .py est茅n en el mismo directorio o en PYTHONPATH.")
    print(f"sys.path actual: {sys.path}")
    sys.exit(1)


# La l贸gica del decorador dummy puede permanecer, es inofensiva
if decorators.was_real_spaces_gpu_imported():
    print("INFO (app.py): El decorador GPU de 'spaces' parece estar disponible.")
    print("INFO (app.py): Se definir谩 una funci贸n dummy decorada para satisfacer el chequeo de Gradio si es necesario.")
    
    @decorators.gpu_decorator(duration=1) 
    def _app_py_dummy_gpu_function_for_gradio_startup():
        pass
else:
    print("INFO (app.py): El decorador GPU real de 'spaces' no fue importado. No se necesita funci贸n dummy para GPU.")


# ... (c贸digo anterior)

def main():
    print("INFO (app.py): Creando la interfaz Gradio...")
    demo_instance = create_interface(process_function_for_button=app_interface_module.process_and_plot)
    
    print("INFO (app.py): Lanzando la interfaz Gradio localmente...")
    try:
        # Especifica expl铆citamente un nombre de API para el bot贸n
        demo_instance.config = demo_instance.get_config()
        demo_instance.config["api_open"] = True  # Habilita la API autom谩ticamente
        
        demo_instance.launch(
            debug=True,
            server_name="0.0.0.0" if os.getenv('GRADIO_SERVER_NAME') else None,
            server_port=int(os.getenv('GRADIO_SERVER_PORT', 7860))
        )
    except Exception as e_launch:
        print(f"Error inesperado durante demo.launch(): {e_launch}")
        # Intenta lanzar con par谩metros alternativos
        try:
            demo_instance.launch(share=True, debug=True)
        except:
            traceback.print_exc()

# ... (resto del c贸digo)

if __name__ == "__main__":
    main()