#!/usr/bin/env python3 """ Script de lancement pour l'application Streamlit Foodwatch Analyzer Usage: python launch.py [--install] [--port 8501] """ import subprocess import sys import os import argparse from pathlib import Path def check_requirements(): """Vérifie si toutes les dépendances sont installées""" required_packages = [ 'streamlit', 'pandas', 'plotly', 'requests', 'beautifulsoup4', 'lxml', 'numpy' ] missing_packages = [] for package in required_packages: try: __import__(package) except ImportError: missing_packages.append(package) return missing_packages def install_requirements(): """Installe les dépendances depuis requirements.txt""" print("📦 Installation des dépendances...") if Path("requirements.txt").exists(): try: subprocess.check_call([ sys.executable, "-m", "pip", "install", "-r", "requirements.txt" ]) print("✅ Dépendances installées avec succès") return True except subprocess.CalledProcessError as e: print(f"❌ Erreur lors de l'installation: {e}") return False else: print("❌ Fichier requirements.txt non trouvé") return False def launch_streamlit(port=8501): """Lance l'application Streamlit""" if not Path("foodwatch_streamlit_app.py").exists(): print("❌ Fichier foodwatch_streamlit_app.py non trouvé") print("Assurez-vous que le fichier de l'application est présent") return False print(f"🚀 Lancement de l'application sur le port {port}...") print(f"🌐 URL: http://localhost:{port}") print("👆 Cliquez sur le lien ci-dessus ou copiez-le dans votre navigateur") print("🛑 Pour arrêter l'application, appuyez sur Ctrl+C") try: subprocess.run([ sys.executable, "-m", "streamlit", "run", "foodwatch_streamlit_app.py", "--server.port", str(port), "--server.headless", "false", "--browser.gatherUsageStats", "false" ]) return True except KeyboardInterrupt: print("\n👋 Application arrêtée par l'utilisateur") return True except Exception as e: print(f"❌ Erreur lors du lancement: {e}") return False def main(): """Fonction principale""" parser = argparse.ArgumentParser( description="🛡️ Foodwatch Arnaques Analyzer - Launcher" ) parser.add_argument( "--install", action="store_true", help="Installer les dépendances avant le lancement" ) parser.add_argument( "--port", type=int, default=8501, help="Port pour l'application Streamlit (défaut: 8501)" ) parser.add_argument( "--check", action="store_true", help="Vérifier seulement les dépendances" ) args = parser.parse_args() print("🛡️ Foodwatch Arnaques Analyzer") print("=" * 50) # Vérification des dépendances missing = check_requirements() if missing: print(f"⚠️ Dépendances manquantes: {', '.join(missing)}") if args.install: if not install_requirements(): sys.exit(1) else: print("💡 Utilisez --install pour installer automatiquement") print("Ou manuellement: pip install -r requirements.txt") if not args.check: sys.exit(1) else: print("✅ Toutes les dépendances sont installées") if args.check: print("🎉 Vérification terminée") return # Lancement de l'application success = launch_streamlit(args.port) if not success: sys.exit(1) if __name__ == "__main__": main()