254 lines
6.9 KiB
Bash
Executable File
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
|