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.