data / main.py
Tracy André
updated
27281c3
raw
history blame
2.85 kB
"""
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()