#!/bin/bash # # Script d'installation complète des dépendances GeniusIA v2 # Installe toutes les dépendances Python et système manquantes # set -e # Arrêter en cas d'erreur echo "============================================================" echo "INSTALLATION COMPLÈTE DES DÉPENDANCES GENIUSIA V2" echo "============================================================" echo "" # Couleurs pour l'affichage RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Fonction pour afficher les messages print_status() { echo -e "${GREEN}[✓]${NC} $1" } print_error() { echo -e "${RED}[✗]${NC} $1" } print_warning() { echo -e "${YELLOW}[⚠]${NC} $1" } print_info() { echo -e "${YELLOW}[i]${NC} $1" } # Vérifier si on est dans le bon répertoire if [ ! -d "geniusia2" ]; then print_error "Erreur: Le répertoire geniusia2 n'existe pas" print_info "Exécute ce script depuis la racine du projet" exit 1 fi print_status "Répertoire du projet trouvé" # 1. Vérifier/Créer l'environnement virtuel echo "" echo "1. Environnement virtuel" echo "----------------------------------------" if [ ! -d "geniusia2/venv" ]; then print_warning "Environnement virtuel non trouvé, création..." python3 -m venv geniusia2/venv print_status "Environnement virtuel créé" else print_status "Environnement virtuel existe" fi # Activer l'environnement virtuel print_info "Activation de l'environnement virtuel..." source geniusia2/venv/bin/activate if [ -z "$VIRTUAL_ENV" ]; then print_error "Échec de l'activation de l'environnement virtuel" exit 1 fi print_status "Environnement virtuel activé: $VIRTUAL_ENV" # 2. Mettre à jour pip echo "" echo "2. Mise à jour de pip" echo "----------------------------------------" pip install --upgrade pip setuptools wheel > /dev/null 2>&1 print_status "pip mis à jour" # 3. Installer les dépendances système echo "" echo "3. Dépendances système" echo "----------------------------------------" print_info "Vérification des dépendances système..." # Vérifier wmctrl if ! command -v wmctrl &> /dev/null; then print_warning "wmctrl non installé, installation..." sudo apt-get update sudo apt-get install -y wmctrl print_status "wmctrl installé" else print_status "wmctrl déjà installé" fi # Vérifier xdotool if ! command -v xdotool &> /dev/null; then print_warning "xdotool non installé, installation..." sudo apt-get install -y xdotool print_status "xdotool installé" else print_status "xdotool déjà installé" fi # Vérifier scrot if ! command -v scrot &> /dev/null; then print_warning "scrot non installé, installation..." sudo apt-get install -y scrot print_status "scrot installé" else print_status "scrot déjà installé" fi # 4. Installer PyTorch (CPU version pour économiser l'espace) echo "" echo "4. PyTorch" echo "----------------------------------------" if python -c "import torch" 2>/dev/null; then TORCH_VERSION=$(python -c "import torch; print(torch.__version__)" 2>/dev/null) print_status "PyTorch déjà installé (version $TORCH_VERSION)" else print_warning "Installation de PyTorch (CPU version)..." print_info "Cela peut prendre plusieurs minutes..." pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu print_status "PyTorch installé" fi # 5. Installer FAISS echo "" echo "5. FAISS" echo "----------------------------------------" if python -c "import faiss" 2>/dev/null; then print_status "FAISS déjà installé" else print_warning "Installation de FAISS..." # Essayer d'abord faiss-cpu if pip install faiss-cpu; then print_status "FAISS (CPU) installé" else print_warning "Échec avec faiss-cpu, essai avec le script install_faiss.sh..." if [ -f "geniusia2/install_faiss.sh" ]; then bash geniusia2/install_faiss.sh print_status "FAISS installé via script" else print_error "Impossible d'installer FAISS" print_info "Essaye manuellement: pip install faiss-cpu" fi fi fi # 6. Installer OpenCLIP echo "" echo "6. OpenCLIP" echo "----------------------------------------" if python -c "import open_clip" 2>/dev/null; then print_status "OpenCLIP déjà installé" else print_warning "Installation d'OpenCLIP..." pip install open-clip-torch print_status "OpenCLIP installé" fi # 7. Installer les autres dépendances Python echo "" echo "7. Autres dépendances Python" echo "----------------------------------------" print_info "Installation des dépendances depuis requirements.txt..." if [ -f "geniusia2/requirements.txt" ]; then pip install -r geniusia2/requirements.txt 2>&1 | grep -v "Requirement already satisfied" || true print_status "Dépendances installées depuis requirements.txt" else print_warning "requirements.txt non trouvé, installation manuelle..." # Liste des dépendances critiques DEPS=( "pynput" "transformers" "Pillow" "numpy" "opencv-python" "scikit-learn" "cryptography" ) for dep in "${DEPS[@]}"; do if python -c "import ${dep//-/_}" 2>/dev/null; then print_status "$dep déjà installé" else print_info "Installation de $dep..." pip install "$dep" print_status "$dep installé" fi done fi # 8. Vérification finale echo "" echo "8. Vérification finale" echo "----------------------------------------" print_info "Vérification des imports critiques..." # Fonction de test d'import test_import() { if python -c "import $1" 2>/dev/null; then print_status "$1" return 0 else print_error "$1 - ÉCHEC" return 1 fi } FAILED=0 test_import "torch" || FAILED=$((FAILED + 1)) test_import "faiss" || FAILED=$((FAILED + 1)) test_import "open_clip" || FAILED=$((FAILED + 1)) test_import "PIL" || FAILED=$((FAILED + 1)) test_import "numpy" || FAILED=$((FAILED + 1)) test_import "pynput" || FAILED=$((FAILED + 1)) test_import "transformers" || FAILED=$((FAILED + 1)) # 9. Résumé echo "" echo "============================================================" echo "RÉSUMÉ DE L'INSTALLATION" echo "============================================================" echo "" if [ $FAILED -eq 0 ]; then print_status "Toutes les dépendances sont installées avec succès!" echo "" print_info "Pour utiliser le système, active l'environnement virtuel:" echo " source geniusia2/venv/bin/activate" echo "" print_info "Puis lance l'application:" echo " python3 geniusia2/main.py" echo "" exit 0 else print_error "$FAILED dépendance(s) n'ont pas pu être installées" echo "" print_info "Vérifie les erreurs ci-dessus et réessaye" print_info "Tu peux aussi exécuter le diagnostic:" echo " python3 diagnostic_complet_systeme.py" echo "" exit 1 fi