|
|
|
import sys |
|
from pathlib import Path |
|
import os |
|
import subprocess |
|
|
|
|
|
|
|
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" |
|
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}"]) |
|
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.") |
|
|
|
|
|
|
|
|
|
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.config = demo_instance.get_config() |
|
demo_instance.config["api_open"] = True |
|
|
|
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}") |
|
|
|
try: |
|
demo_instance.launch(share=True, debug=True) |
|
except: |
|
traceback.print_exc() |
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
main() |