Spaces:
Sleeping
Sleeping
File size: 3,908 Bytes
b657ab9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
#!/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() |