""" Point d'entrée principal de l'application d'analyse des adventices agricoles Avec détection automatique des problèmes et fallback """ import warnings import matplotlib.pyplot as plt import seaborn as sns import sys import os # Suppression des warnings warnings.filterwarnings('ignore') # Configuration des graphiques plt.style.use('default') sns.set_palette("husl") def try_gradio_interface(): """Essaie de lancer l'interface Gradio""" try: print("🔄 Tentative de lancement de l'interface Gradio...") from interface import AgricultureInterface app = AgricultureInterface() app.launch() return True except ImportError as e: print(f"❌ Erreur d'import: {e}") if "pyaudioop" in str(e) or "audioop" in str(e): print("🔍 Problème détecté: Dépendance audio manquante pour Gradio") return False except Exception as e: print(f"❌ Erreur lors du lancement de Gradio: {e}") return False def run_fallback(): """Lance le mode fallback sans Gradio""" try: print("🔄 Basculement vers le mode fallback...") from main_fallback import run_analysis_without_ui return run_analysis_without_ui() except Exception as e: print(f"❌ Erreur dans le mode fallback: {e}") return False def main(): """Fonction principale avec gestion d'erreur et fallback automatique""" print("🌾 Application d'Analyse des Adventices Agricoles") print("=" * 60) # Tentative 1: Interface Gradio complète print("\n🎯 Tentative 1: Interface web avec Gradio") try: if try_gradio_interface(): return # Succès, on s'arrête ici except KeyboardInterrupt: print("\n⏹️ Arrêt demandé par l'utilisateur") return except Exception as e: print(f"❌ Échec critique de l'interface Gradio: {e}") # Tentative 2: Mode fallback console print("\n🎯 Tentative 2: Mode console (fallback)") try: if run_fallback(): print("\n✅ Mode fallback exécuté avec succès") print("\n💡 Pour utiliser l'interface web, résolvez les problèmes de dépendances:") print(" - Installez les dépendances audio manquantes") print(" - Ou utilisez une version compatible de Gradio") else: print("\n❌ Échec du mode fallback") exit(1) except KeyboardInterrupt: print("\n⏹️ Arrêt demandé par l'utilisateur") return except Exception as e: print(f"\n❌ Erreur critique dans le mode fallback: {e}") print("🆘 Aucun mode disponible - vérifiez vos dépendances") exit(1) if __name__ == "__main__": main()