File size: 3,025 Bytes
d3d8124
e43df9f
de3a711
eaf89d5
34c9a39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b4444af
de3a711
e43df9f
 
 
 
de3a711
9ee4000
e43df9f
 
 
30dcf91
9ee4000
e43df9f
de3a711
30dcf91
9ee4000
30dcf91
 
e43df9f
30dcf91
e43df9f
 
 
 
30dcf91
d3d8124
 
e43df9f
de3a711
 
e43df9f
30dcf91
eaf89d5
30dcf91
9ee4000
30dcf91
eaf89d5
30dcf91
9ee4000
30dcf91
9ee4000
 
 
30dcf91
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
# app.py
import sys
from pathlib import Path
import os
import subprocess # Para un control m谩s fino sobre los comandos del sistema

# --- CR脥TICO: L脥NEA PARA FORZAR LA VERSI脫N DE GRADIO ---
# Forzar la desinstalaci贸n de cualquier versi贸n de gradio y gradio_client
# y luego instalar la versi贸n deseada antes de cualquier importaci贸n de gradio.
# Esto es necesario si el entorno de HF Spaces o tu sistema est谩 sobreescribiendo las versiones.
print("INFO: Forzando la instalaci贸n de Gradio 4.29.0...")
try:
    # Desinstalar cualquier versi贸n existente de gradio y gradio_client
    subprocess.check_call([sys.executable, "-m", "pip", "uninstall", "-y", "gradio", "gradio-client"])
    # Instalar la versi贸n espec铆fica deseada
    subprocess.check_call([sys.executable, "-m", "pip", "install", "gradio==4.29.0", "gradio-client==1.3.0"]) # 1.3.0 es la client compatible con 4.x
    print("INFO: Gradio 4.29.0 instalado correctamente de forma forzada.")
except subprocess.CalledProcessError as e:
    print(f"ERROR: Fallo al forzar la instalaci贸n de Gradio 4.29.0: {e}")
    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 
    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)


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.")


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:
        demo_instance.launch(debug=True) # Habilitar debug=True para ver m谩s logs de Gradio
    except ValueError as ve:
        if "shareable link must be created" in str(ve).lower() or "localhost is not accessible" in str(ve).lower():
            print("ADVERTENCIA (app.py): Fall贸 el lanzamiento local directo, intentando con share=True...")
            demo_instance.launch(share=True, debug=True)
        else:
            print(f"Error inesperado de ValueError durante launch(): {ve}")
            raise ve
    except Exception as e_launch:
        print(f"Error inesperado durante demo.launch(): {e_launch}")
        raise e_launch


if __name__ == "__main__":
    main()