Files
Geniusia_v2/installer_dependances_completes.sh
2026-03-05 00:20:25 +01:00

254 lines
6.9 KiB
Bash
Executable File

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