Files
StabilityTester/main.py
T
tuxgyver 4adde135d7 v1.0.1 - corrige le demarrage et ajoute le build Windows
L'application ne demarrait pas du tout : gui/app.py importait pyqtSignal,
qui est le nom PyQt du signal, absent de PySide6. Trois autres defauts
bloquaient juste derriere, une fois celui-ci leve :

- MPLBACKEND etait fixe a 'module://backend_interagg', le backend interne de
  PyCharm, indisponible hors de cet IDE ;
- gui/app.py et monitor/monitor.py utilisaient des imports relatifs
  remontant au-dela du paquet racine charge par main.py ;
- core/ n'avait pas de __init__.py.

Corrige aussi get_statistics(), dont le retour anticipe "historique vide"
omettait connection_loss_count et uptime_percentage : le KeyError qui en
resultait cassait silencieusement tout l'onglet Statistiques a chaque
rafraichissement. Les deux chemins renvoient desormais les memes cles.

Ajoute le build Windows (StabilityTester.spec + make build-windows), qui
produit un .exe autonome depuis Linux via Wine. PySide6 y est epingle a
6.9.3 : a partir de 6.10, Qt6Core.dll depend de l'ICU systeme de Windows
que Wine n'implemente pas. La sortie standard est reconfiguree en UTF-8
dans main.py, les emojis des messages faisant echouer cp1252 sous Windows.

make test etait casse par la meme confusion de paquet et passe a nouveau.
Makefile : libgl1-mesa-glx, retire des depots Debian/Ubuntu recents,
remplace par libgl1 et les dependances Qt6 manquantes.
2026-09-11 08:12:33 +02:00

42 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""
StabilityTester - Application de surveillance de connexion internet
Lancez ce fichier pour demarrer l'application GUI avec PySide6
"""
import sys
import os
# Sous Windows la sortie standard utilise cp1252 : les emojis des messages
# ci-dessous la font echouer avec UnicodeEncodeError des qu'elle est
# redirigee. En mode fenetre (executable PyInstaller) stdout vaut None.
for _stream in (sys.stdout, sys.stderr):
if _stream is not None:
_stream.reconfigure(encoding="utf-8", errors="replace")
# Ajouter le repertoire parent au path pour les imports
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
# Forcer le backend matplotlib avant d'importer l'interface
# Cela évite les erreurs "Failed to import PyQt5, PySide2"
import matplotlib
matplotlib.use("QtAgg")
# Essayer d'importer l'interface PySide6
try:
from gui.app import run_application
print("✅ Utilisation de PySide6 pour l'interface graphique")
run_application()
except ImportError as e:
print(f"❌ Erreur: Impossible de charger l'interface PySide6: {e}")
print("")
print("Pour résoudre ce problème:")
print("1. Installez les dépendances: pip install -r requirements.txt")
print("2. Assurez-vous que PySide6 est installé: pip install PySide6")
print("3. Essayez: pip install --upgrade PySide6 matplotlib")
print("")
print("Si vous utilisez un environnement virtuel, activez-le d'abord:")
print(" source .venv/bin/activate # Linux/macOS")
print(" .\\.venv\\Scripts\\activate # Windows")
sys.exit(1)