MMOON commited on
Commit
b657ab9
·
verified ·
1 Parent(s): b5cf6a7

Create launch.py

Browse files
Files changed (1) hide show
  1. src/launch.py +131 -0
src/launch.py ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Script de lancement pour l'application Streamlit Foodwatch Analyzer
4
+ Usage: python launch.py [--install] [--port 8501]
5
+ """
6
+
7
+ import subprocess
8
+ import sys
9
+ import os
10
+ import argparse
11
+ from pathlib import Path
12
+
13
+ def check_requirements():
14
+ """Vérifie si toutes les dépendances sont installées"""
15
+ required_packages = [
16
+ 'streamlit', 'pandas', 'plotly', 'requests',
17
+ 'beautifulsoup4', 'lxml', 'numpy'
18
+ ]
19
+
20
+ missing_packages = []
21
+
22
+ for package in required_packages:
23
+ try:
24
+ __import__(package)
25
+ except ImportError:
26
+ missing_packages.append(package)
27
+
28
+ return missing_packages
29
+
30
+ def install_requirements():
31
+ """Installe les dépendances depuis requirements.txt"""
32
+ print("📦 Installation des dépendances...")
33
+
34
+ if Path("requirements.txt").exists():
35
+ try:
36
+ subprocess.check_call([
37
+ sys.executable, "-m", "pip", "install", "-r", "requirements.txt"
38
+ ])
39
+ print("✅ Dépendances installées avec succès")
40
+ return True
41
+ except subprocess.CalledProcessError as e:
42
+ print(f"❌ Erreur lors de l'installation: {e}")
43
+ return False
44
+ else:
45
+ print("❌ Fichier requirements.txt non trouvé")
46
+ return False
47
+
48
+ def launch_streamlit(port=8501):
49
+ """Lance l'application Streamlit"""
50
+ if not Path("foodwatch_streamlit_app.py").exists():
51
+ print("❌ Fichier foodwatch_streamlit_app.py non trouvé")
52
+ print("Assurez-vous que le fichier de l'application est présent")
53
+ return False
54
+
55
+ print(f"🚀 Lancement de l'application sur le port {port}...")
56
+ print(f"🌐 URL: http://localhost:{port}")
57
+ print("👆 Cliquez sur le lien ci-dessus ou copiez-le dans votre navigateur")
58
+ print("🛑 Pour arrêter l'application, appuyez sur Ctrl+C")
59
+
60
+ try:
61
+ subprocess.run([
62
+ sys.executable, "-m", "streamlit", "run",
63
+ "foodwatch_streamlit_app.py",
64
+ "--server.port", str(port),
65
+ "--server.headless", "false",
66
+ "--browser.gatherUsageStats", "false"
67
+ ])
68
+ return True
69
+ except KeyboardInterrupt:
70
+ print("\n👋 Application arrêtée par l'utilisateur")
71
+ return True
72
+ except Exception as e:
73
+ print(f"❌ Erreur lors du lancement: {e}")
74
+ return False
75
+
76
+ def main():
77
+ """Fonction principale"""
78
+ parser = argparse.ArgumentParser(
79
+ description="🛡️ Foodwatch Arnaques Analyzer - Launcher"
80
+ )
81
+ parser.add_argument(
82
+ "--install",
83
+ action="store_true",
84
+ help="Installer les dépendances avant le lancement"
85
+ )
86
+ parser.add_argument(
87
+ "--port",
88
+ type=int,
89
+ default=8501,
90
+ help="Port pour l'application Streamlit (défaut: 8501)"
91
+ )
92
+ parser.add_argument(
93
+ "--check",
94
+ action="store_true",
95
+ help="Vérifier seulement les dépendances"
96
+ )
97
+
98
+ args = parser.parse_args()
99
+
100
+ print("🛡️ Foodwatch Arnaques Analyzer")
101
+ print("=" * 50)
102
+
103
+ # Vérification des dépendances
104
+ missing = check_requirements()
105
+
106
+ if missing:
107
+ print(f"⚠️ Dépendances manquantes: {', '.join(missing)}")
108
+
109
+ if args.install:
110
+ if not install_requirements():
111
+ sys.exit(1)
112
+ else:
113
+ print("💡 Utilisez --install pour installer automatiquement")
114
+ print("Ou manuellement: pip install -r requirements.txt")
115
+ if not args.check:
116
+ sys.exit(1)
117
+ else:
118
+ print("✅ Toutes les dépendances sont installées")
119
+
120
+ if args.check:
121
+ print("🎉 Vérification terminée")
122
+ return
123
+
124
+ # Lancement de l'application
125
+ success = launch_streamlit(args.port)
126
+
127
+ if not success:
128
+ sys.exit(1)
129
+
130
+ if __name__ == "__main__":
131
+ main()