SuiteConsultance/install.py
2025-09-20 13:18:04 +02:00

105 lines
3.4 KiB
Python

#!/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()