#!/usr/bin/env python3 import os import sys import subprocess import platform def check_python_version(): """Vérifie que la version de Python est suffisante.""" major, minor = sys.version_info[:2] if major < 3 or (major == 3 and minor < 7): print(f"Votre version de Python ({major}.{minor}) est trop ancienne.") print("SuiteConsultance nécessite Python 3.7 ou supérieur.") return False return True def check_tk_version(): """Vérifie la version de Tk.""" try: import tkinter as tk root = tk.Tk() tk_version = root.tk.call("info", "patchlevel") root.destroy() major, minor = map(int, tk_version.split('.')[:2]) print(f"Version de Tk détectée: {tk_version}") if major < 8 or (major == 8 and minor < 6): print("SuiteConsultance fonctionne mieux avec Tk 8.6 ou supérieur.") print("Certaines fonctionnalités d'interface utilisateur peuvent être limitées.") return False return True except: print("Impossible de déterminer la version de Tk.") return False def update_pip(): """Met à jour pip vers la dernière version.""" try: print("Mise à jour de pip...") subprocess.check_call([sys.executable, "-m", "pip", "install", "--upgrade", "pip"]) return True except subprocess.CalledProcessError: print("Erreur lors de la mise à jour de pip.") return False def install_dependencies(): """Installe les dépendances à partir du fichier requirements.txt.""" requirements_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "requirements.txt") if not os.path.exists(requirements_path): print(f"Erreur: Le fichier {requirements_path} n'existe pas.") return False try: print("Installation des dépendances...") subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", requirements_path]) return True except subprocess.CalledProcessError: print("Erreur lors de l'installation des dépendances.") return False def create_directories(): """Crée les répertoires nécessaires s'ils n'existent pas.""" directories = [ "Data", "Data/clients", "Data/prospects", "output", "output/devis", "output/propositions", "output/factures" ] for directory in directories: dir_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), directory) if not os.path.exists(dir_path): print(f"Création du répertoire {directory}...") os.makedirs(dir_path) def main(): """Fonction principale.""" print("=== Installation de SuiteConsultance ===") if not check_python_version(): return has_tk = check_tk_version() update_pip() if install_dependencies(): create_directories() print("\n=== Installation terminée avec succès ===") print("\nVous pouvez maintenant lancer SuiteConsultance avec la commande:") print("python main.py") if not has_tk: print("\nAttention: Votre version de Tk est obsolète.") print("L'interface utilisateur peut avoir un aspect différent de celui prévu.") else: print("\n=== L'installation a échoué ===") print("Veuillez vérifier les erreurs ci-dessus et réessayer.") if __name__ == "__main__": main()