Un ambiente virtuale è un ambiente Python isolato con i propri pacchetti installati, separato dal Python di sistema e da altri progetti. Risolve i conflitti di dipendenza — progetti diversi possono usare versioni diverse (anche incompatibili) dello stesso pacchetto.
Il problema che risolve
Project A needs Django 3.2
Project B needs Django 4.2
→ Installing globally, they CONFLICT — you can't have both versions system-wide.
Virtual environments give each project its OWN isolated set of packages.
Senza isolamento, installare pacchetti globalmente porta a conflitti di versione tra i progetti e può rompere gli strumenti di sistema che dipendono da versioni specifiche.
