105 lines
3.4 KiB
Python
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()
|