Come creare gli ambienti virtuali in Python con Windows e PowerShell

1 - Introduzione

Un ambiente virtuale in Python è una cartella isolata che contiene una copia indipendente dell'interprete Python e delle librerie installate. Serve a separare i progetti tra loro, evitando conflitti tra versioni di pacchetti diverse. In questo modo, ogni progetto può avere le proprie dipendenze senza influenzare il sistema globale.

2 - Inizio configurazione

Premi i tasti "Windows+X" e clicca sulla voce "Terminale". Nota: non eseguire quello con privilegi amministrativi.

Una volta aperto, viene mostrato un prompt simile al seguente, dove è possibile digitare i comandi:

PS C:\Users\NomeUtente>

Crea una cartella di prova con:

mkdir prove

Entra nella cartella con:

cd prove

3 - Creazione dell'ambiente virtuale

python -m venv .venv

Questo comando crea una cartella chiamata .venv che contiene l'ambiente virtuale isolato. Il parametro -m venv invoca il modulo venv di Python, mentre .venv è il nome della cartella che conterrà l'ambiente.

4 - Attivazione dell'ambiente virtuale

.\.venv\Scripts\Activate.ps1

Questo comando attiva l'ambiente virtuale. Dopo l'esecuzione, il prompt mostra il nome dell'ambiente tra parentesi, indicando che tutti i comandi Python e pip agiranno solo all'interno dell'ambiente isolato. Se PowerShell blocca l'esecuzione per motivi di policy, potrebbe essere necessario modificare la ExecutionPolicy, ma questa operazione non è richiesta in questa guida.

5 - Aggiornamento degli strumenti di base

python -m pip --no-cache-dir install -U pip setuptools wheel

Questo comando aggiorna i tre strumenti fondamentali di Python:

  • pip è il gestore dei pacchetti, usato per installare e disinstallare librerie.
  • setuptools è lo strumento che permette di costruire e installare pacchetti Python.
  • wheel è il formato di pacchetto precompilato che velocizza l'installazione.

L'opzione --no-cache-dir evita di usare la cache locale dei pacchetti scaricati, forzando il download fresco. L'opzione -U indica l'aggiornamento all'ultima versione disponibile.

6 - Installazione delle librerie principali

pip install --no-cache-dir numpy pillow requests

Questo comando installa contemporaneamente tre librerie nell'ambiente virtuale attivo. L'opzione --no-cache-dir evita di usare la cache locale dei pacchetti scaricati, forzando pip a scaricare tutto da zero. Questo è utile per assicurarsi di ottenere le versioni più recenti e per evitare problemi legati a cache corrotte.

6.1 - numpy

numpy è la libreria fondamentale per il calcolo numerico e matriciale in Python. Fornisce array multidimensionali e funzioni matematiche veloci, ed è la base di gran parte dell'ecosistema scientifico.

Spiegazione dettagliata:

  • Il cuore di numpy è l'oggetto ndarray, un array multidimensionale omogeneo che occupa memoria contigua e permette operazioni vettoriali molto più veloci rispetto alle liste native di Python.
  • Supporta il broadcasting, ovvero la capacità di eseguire operazioni tra array di forme diverse senza dover replicare manualmente i dati.
  • Include funzioni per algebra lineare, trasformate di Fourier, generazione di numeri casuali e statistiche di base.
  • È la dipendenza di moltissime altre librerie scientifiche come pandas, scipy, scikit-learn e tensorflow, che ne usano le strutture dati come fondamento.
  • L'installazione tramite pip scarica un pacchetto precompilato (wheel) contenente codice C e Fortran già compilato, quindi non serve un compilatore sul sistema.

6.2 - pillow

pillow è la libreria per la manipolazione delle immagini. Permette di aprire, modificare, convertire e salvare immagini in molti formati.

Spiegazione dettagliata:

  • Pillow è il fork mantenuto della storica libreria PIL (Python Imaging Library), ormai non più aggiornata.
  • Supporta un'ampia varietà di formati tra cui PNG, JPEG, GIF, BMP, TIFF e WebP.
  • Permette operazioni come ridimensionamento, rotazione, ritaglio, applicazione di filtri, conversione tra modalità colore (RGB, scala di grigi, CMYK).
  • Consente di disegnare testo e forme sopra le immagini tramite il modulo ImageDraw.
  • Include funzionalità di elaborazione come sfocatura, nitidezza, contorni e correzione del contrasto tramite il modulo ImageFilter.
  • L'installazione tramite pip include i binari necessari per la maggior parte dei formati, senza richiedere dipendenze esterne sul sistema.

6.3 - requests

requests è la libreria per effettuare richieste HTTP in modo semplice. Serve per comunicare con API web, scaricare pagine e inviare dati a server.

Spiegazione dettagliata:

  • Semplifica notevolmente l'uso del modulo standard urllib, riducendo il codice necessario per una richiesta HTTP a una sola riga.
  • Supporta tutti i metodi HTTP principali: GET, POST, PUT, DELETE, PATCH, HEAD e OPTIONS.
  • Gestisce automaticamente la codifica dei parametri URL, la decodifica delle risposte e il parsing del JSON tramite il metodo .json().
  • Permette di inviare header personalizzati, cookie, file e dati in formato form o JSON.
  • Gestisce sessioni persistenti con Session, utili per mantenere cookie e configurazioni tra più richieste.
  • Supporta proxy, timeout, redirect automatici e autenticazione HTTP di base e digest.
  • È una delle librerie più usate nell'ecosistema Python per interagire con servizi web e API REST.

7 - Dove trovare altre librerie

Il sito di riferimento è:

https://pypi.org

PyPI (Python Package Index) è il repository ufficiale dei pacchetti Python. Qui si possono cercare librerie per qualsiasi esigenza.

Per verificare che una libreria sia affidabile e non presenti problemi:

  • Controllare il numero di download e la data dell'ultimo aggiornamento.
  • Leggere la descrizione e la documentazione ufficiale linkata.
  • Verificare la presenza di un repository pubblico del codice sorgente.
  • Controllare che il manutentore sia attivo e che le issue vengano gestite.
  • Preferire pacchetti con molte stelle e fork se il repository è su piattaforme note.
  • Evitare pacchetti con nomi simili a quelli famosi ma con piccole differenze, tipici di tentativi di contraffazione.

8 - Installazione di librerie da sorgente

Metodo classico con setup.py:

python setup.py build
python setup.py install

Il primo comando compila il pacchetto nella cartella di build, il secondo lo installa nell'ambiente corrente.

Uso moderno con pip:

pip install .

Questo comando installa il pacchetto presente nella cartella corrente usando il sistema di build moderno definito in pyproject.toml, senza invocare direttamente setup.py.

9 - Creare il file requirements.txt

pip freeze > requirements.txt

Questo comando scrive nel file requirements.txt l'elenco di tutte le librerie installate nell'ambiente con le relative versioni esatte. Serve per riprodurre lo stesso ambiente su un'altra macchina.

10 - Disinstallare tutte le librerie

pip uninstall -y -r requirements.txt

Questo comando disinstalla tutte le librerie elencate nel file requirements.txt. L'opzione -y conferma automaticamente senza chiedere, l'opzione -r indica di leggere l'elenco dal file specificato.

11 - Uscire dall'ambiente virtuale

deactivate

Questo comando disattiva l'ambiente virtuale e riporta il terminale all'uso dell'interprete Python globale del sistema.

12 - Eliminare l'ambiente virtuale

Remove-Item .venv -Recurse -Force

Questo comando elimina definitivamente la cartella .venv e tutto il suo contenuto. L'opzione -Recurse permette di cancellare anche le sottocartelle, l'opzione -Force evita richieste di conferma e rimuove anche file protetti o di sola lettura.

Torna agli appunti v1.0 — 21-09-2026