BioRAG / app.py
C2MV's picture
Upload app.py
34c9a39 verified
raw
history blame
3.03 kB
# 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()