Spaces:
Sleeping
Sleeping
| #!/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() |