NeuroNest / app.py
lolout1's picture
added changes to gradio_test.py for gradio dependency issues
214f9f9
#!/usr/bin/env python3
"""
NeuroNest Application Entry Point
Handles initialization and graceful startup for Hugging Face Spaces
"""
import os
import sys
import logging
import time
from pathlib import Path
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
# Set environment variables
os.environ['CUDA_VISIBLE_DEVICES'] = ''
os.environ['FORCE_CUDA'] = '0'
def setup_oneformer_imports():
"""Add OneFormer to Python path if needed"""
oneformer_path = Path(__file__).parent / "oneformer"
if oneformer_path.exists() and str(oneformer_path) not in sys.path:
sys.path.insert(0, str(oneformer_path))
logger.info(f"Added OneFormer to path: {oneformer_path}")
def check_dependencies():
"""Check if all required dependencies are available"""
try:
import torch
logger.info(f"PyTorch version: {torch.__version__}")
logger.info(f"CUDA available: {torch.cuda.is_available()}")
# Verify torch version
if not torch.__version__.startswith('1.9'):
logger.warning(f"Expected PyTorch 1.9.x, got {torch.__version__}")
import detectron2
logger.info(f"Detectron2 version: {detectron2.__version__}")
import gradio as gr
logger.info(f"Gradio version: {gr.__version__}")
import cv2
logger.info(f"OpenCV version: {cv2.__version__}")
import PIL
logger.info(f"Pillow version: {PIL.__version__}")
# Check PIL compatibility
if hasattr(PIL.Image, 'LINEAR'):
logger.info("PIL has LINEAR attribute")
elif hasattr(PIL.Image, 'BILINEAR'):
logger.info("PIL has BILINEAR attribute (newer version)")
# Monkey patch for compatibility
PIL.Image.LINEAR = PIL.Image.BILINEAR
logger.info("Applied PIL compatibility patch")
# Check numpy version
import numpy as np
logger.info(f"NumPy version: {np.__version__}")
return True
except ImportError as e:
logger.error(f"Missing dependency: {e}")
return False
def main():
"""Main application entry point"""
print("=" * 50)
print(f"NeuroNest Application Startup")
print(f"Time: {time.strftime('%Y-%m-%d %H:%M:%S')}")
print("=" * 50)
# Setup paths
setup_oneformer_imports()
# Check dependencies
if not check_dependencies():
logger.error("Dependency check failed")
sys.exit(1)
try:
# Import and launch the Gradio interface
from gradio_test import create_gradio_interface
logger.info("Creating Gradio interface...")
interface = create_gradio_interface()
logger.info("Launching application...")
interface.queue(max_size=10).launch(
server_name="0.0.0.0",
server_port=7860,
share=True,
debug=False
)
except Exception as e:
logger.error(f"Error launching app: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
if __name__ == "__main__":
main()