#!/bin/bash # Script per installare dipendenze ML Hybrid Detector # Risolve il problema di build dependencies (Cython + numpy) richieste da eif set -e echo "╔═══════════════════════════════════════════════╗" echo "║ INSTALLAZIONE DIPENDENZE ML HYBRID ║" echo "╚═══════════════════════════════════════════════╝" echo "" # Vai alla directory python_ml cd "$(dirname "$0")/../python_ml" || exit 1 echo "📍 Directory corrente: $(pwd)" echo "" # Verifica venv if [ ! -d "venv" ]; then echo "❌ ERRORE: Virtual environment non trovato in $(pwd)/venv" echo " Esegui prima: python3 -m venv venv" exit 1 fi # Attiva venv echo "🔧 Attivazione virtual environment..." source venv/bin/activate # Verifica che stiamo usando il venv PYTHON_PATH=$(which python) echo "📍 Python in uso: $PYTHON_PATH" if [[ ! "$PYTHON_PATH" =~ "venv" ]]; then echo "⚠️ WARNING: Non stiamo usando il venv correttamente!" fi echo "" # STEP 1: Aggiorna pip/setuptools/wheel (critici per compilazione) echo "📦 Step 1/4: Aggiornamento pip/setuptools/wheel..." python -m pip install --upgrade pip setuptools wheel if [ $? -eq 0 ]; then echo "✅ pip/setuptools/wheel aggiornati" else echo "❌ Errore durante aggiornamento pip" exit 1 fi echo "" # STEP 2: Installa build dependencies (Cython + numpy) echo "📦 Step 2/4: Installazione build dependencies (Cython + numpy)..." python -m pip install Cython==3.0.5 numpy==1.26.2 if [ $? -eq 0 ]; then echo "✅ Build dependencies installate" else echo "❌ Errore durante installazione build dependencies" exit 1 fi echo "" # STEP 3: Installa ML dependencies (xgboost, joblib) echo "📦 Step 3/4: Installazione xgboost e joblib..." python -m pip install xgboost==2.0.3 joblib==1.3.2 if [ $? -eq 0 ]; then echo "✅ xgboost e joblib installati" else echo "❌ Errore durante installazione xgboost/joblib" exit 1 fi echo "" # STEP 4: Installa eif con build isolation DISABILITATA (via env var) echo "📦 Step 4/4: Installazione eif (compilazione senza isolamento)..." export PIP_NO_BUILD_ISOLATION=1 python -m pip install --no-cache-dir eif==2.0.2 if [ $? -eq 0 ]; then echo "✅ Dipendenze ML installate con successo" else echo "❌ Errore durante installazione dipendenze ML" exit 1 fi echo "" echo "✅ INSTALLAZIONE COMPLETATA!" echo "" echo "🧪 Test import eif..." python -c "from eif import iForest; print('✅ eif importato correttamente')" if [ $? -eq 0 ]; then echo "" echo "✅ TUTTO OK! Hybrid ML Detector pronto per l'uso" echo "" echo "📋 Verifica installazione:" echo " python -c 'from eif import iForest; print(\"✅ eif OK\")'" echo "" echo "📋 Prossimi step:" echo " 1. Test rapido: python train_hybrid.py --mode test" echo " 2. Training completo: python train_hybrid.py --mode train" else echo "❌ Errore durante test import eif" exit 1 fi