File size: 4,112 Bytes
6613451
e43df9f
de3a711
eaf89d5
6613451
 
de3a711
6613451
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e43df9f
 
 
 
de3a711
6613451
 
 
e43df9f
29fefec
e43df9f
de3a711
6613451
 
 
 
 
 
 
d3d8124
 
6613451
 
 
29fefec
6613451
30dcf91
1452a4c
30dcf91
9ee4000
30dcf91
eaf89d5
30dcf91
9ee4000
6613451
9ee4000
 
6613451
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
# app.py (con verificaci贸n despu茅s de forzar)
import sys
from pathlib import Path
import os
import subprocess
import pkg_resources # Para verificar la versi贸n instalada

# --- 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 gradio-client 0.16.1...")
GRADIO_TARGET_VERSION = "4.29.0"
GRADIO_CLIENT_TARGET_VERSION = "0.16.1"
try:
    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}"])
    
    # Verificar la versi贸n instalada
    installed_gradio_version = pkg_resources.get_distribution("gradio").version
    installed_client_version = pkg_resources.get_distribution("gradio_client").version
    
    print(f"INFO (app.py): Versi贸n de Gradio instalada: {installed_gradio_version}")
    print(f"INFO (app.py): Versi贸n de Gradio-Client instalada: {installed_client_version}")

    if installed_gradio_version != GRADIO_TARGET_VERSION or installed_client_version != GRADIO_CLIENT_TARGET_VERSION:
        print(f"ERROR (app.py): No se pudo forzar la versi贸n correcta de Gradio/Gradio-Client.")
        print(f"Se esperaba Gradio {GRADIO_TARGET_VERSION}, se obtuvo {installed_gradio_version}")
        print(f"Se esperaba Gradio-Client {GRADIO_CLIENT_TARGET_VERSION}, se obtuvo {installed_client_version}")
        # sys.exit(1) # Salir si la versi贸n no es la correcta, opcional
    else:
        print(f"INFO (app.py): Gradio {GRADIO_TARGET_VERSION} y Gradio-Client {GRADIO_CLIENT_TARGET_VERSION} instalados y verificados correctamente.")
        
except subprocess.CalledProcessError as e:
    print(f"ERROR (app.py): Fallo al forzar la instalaci贸n de Gradio: {e}")
    sys.exit(1)
except pkg_resources.DistributionNotFound:
    print("ERROR (app.py): Gradio o Gradio-Client no se encontr贸 despu茅s del intento de instalaci贸n.")
    sys.exit(1)
# --- FIN DE L脥NEA CR脥TICA ---

# ... (resto de tu app.py, importando UI, interface, etc.) ...
# Aseg煤rate de que estas importaciones ocurran DESPU脡S del bloque de instalaci贸n.
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 # Usa la UI simplificada para esta prueba
    import interface as app_interface_module
except ImportError as e:
    print(f"Error cr铆tico de importaci贸n en app.py: {e}.")
    sys.exit(1)

# Comentar la l贸gica del decorador dummy por ahora, ya que no es el error principal
# if decorators.was_real_spaces_gpu_imported():
#     print("INFO (app.py): El decorador GPU de 'spaces' parece estar disponible.")
#     @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.")

def main():
    print("INFO (app.py): Creando la interfaz Gradio simplificada...")
    # Usa la UI simplificada
    demo_instance = create_interface(process_function_for_button=None) 
    
    print("INFO (app.py): Lanzando la interfaz Gradio localmente...")
    try:
        demo_instance.launch(debug=True) 
    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()