FOOWATCH_ETQT / src /launch.py
MMOON's picture
Create launch.py
b657ab9 verified
#!/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()