Menu

pip in Python: installare pacchetti, gestire le versioni e usare PyPI

Come installare, aggiornare e rimuovere pacchetti Python con pip, tra PyPI, file requirements e la trappola dell'installazione globale.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

Cos'è davvero pip

pip è lo strumento che installa le librerie Python che non hai scritto tu. Quando esegui pip install requests, cerca requests su PyPI (il Python Package Index), scarica la versione giusta per la tua piattaforma e la mette nella cartella site-packages della tua installazione di Python. Da quel momento import requests funziona.

Ogni installazione di Python 3 da python.org, Homebrew o dal gestore di pacchetti della tua distribuzione Linux include già pip. Prima di installare qualsiasi cosa, verifica:

python -m pip --version

Dovresti vedere un numero di versione e il percorso del modulo pip. Se il comando fallisce, la soluzione più affidabile è:

python -m ensurepip --upgrade

Questo installa pip nel tuo Python usando la copia inclusa con l'interprete.

python -m pip contro pip

Vedrai entrambe le forme. Fanno quasi la stessa cosa, con una differenza importante: python -m pip usa il python presente nel tuo PATH, lo stesso che usano i tuoi script. Il semplice pip usa il primo pip che capita di trovare, e non è sempre lo stesso.

Quando hai più di un Python installato (su macOS succede facilmente), il semplice pip è ciò che ti porta alla situazione confusa del tipo "ho installato la libreria ma il mio codice dice ancora ModuleNotFoundError".

Regola pratica: usa python -m pip ... quando vuoi essere certo di quale interprete riceverà il pacchetto. Il semplice pip va bene per lavori veloci quando ne sei sicuro.

Installare un pacchetto

Il comando di base:

python -m pip install requests

Recupera requests da PyPI, insieme a tutto ciò da cui dipende, e installa il tutto. Un minuto dopo puoi usarlo:

Installare più pacchetti in un colpo solo:

python -m pip install requests pandas rich

Fissare una versione specifica:

python -m pip install "django==5.0.2"
python -m pip install "requests>=2.30,<3"

In alcune shell le virgolette contano: impediscono che == e < vengano interpretati come operatori della shell.

Aggiornare e disinstallare

python -m pip install --upgrade requests
python -m pip uninstall requests

--upgrade recupera la versione più recente che soddisfa il vincolo che hai indicato. uninstall rimuove il pacchetto ma non le sue dipendenze, che restano lì finché non le rimuovi esplicitamente.

Per tenere aggiornato pip stesso:

python -m pip install --upgrade pip

Vale la pena lanciarlo una volta ogni qualche mese. Le versioni più recenti di pip intercettano più problemi di installazione e risolvono meglio le dipendenze.

Vedere cosa è installato

python -m pip list
python -m pip show requests

list mostra ogni pacchetto installato nel Python corrente. show requests stampa versione, posizione, dipendenze e licenza di quel pacchetto specifico: utile quando ti chiedi "quale versione sto usando davvero?"

requirements.txt: mettere per iscritto le dipendenze

Quando un progetto usa più di un paio di librerie, scrivi l'elenco. pip freeze lo fa per te:

python -m pip freeze > requirements.txt

Ottieni un file con una dipendenza fissata per riga:

django==5.0.2
requests==2.31.0
rich==13.7.1

Chiunque cloni il tuo repository può riprodurre l'installazione con:

python -m pip install -r requirements.txt

pip freeze cattura tutto ciò che è installato, comprese le dipendenze transitive. Va bene per una riproducibilità esatta, ma è rumoroso quando vuoi solo le librerie di primo livello che il tuo codice importa davvero. Molti progetti mantengono a mano un requirements.txt con le dipendenze dirette e lasciano che pip risolva quelle transitive.

Nei progetti moderni, pyproject.toml (abbinato a strumenti come pip-tools, uv, poetry o hatch) sta prendendo il posto di requirements.txt. Il concetto è lo stesso ("scrivi le dipendenze, lancia un comando per installarle"), ma il formato del file è più strutturato.

Installa sempre in un ambiente virtuale

Ogni progetto Python reale dovrebbe avere un ambiente virtuale. È una cartella locale al progetto con il suo python e i suoi pacchetti installati, così pip install in un progetto non tocca nessun altro.

La configurazione in due righe:

python -m venv .venv
source .venv/bin/activate    # macOS / Linux
# oppure .venv\Scripts\activate su Windows

Una volta attivato, python -m pip install requests installa nel venv. Il Python di sistema resta pulito. Approfondiamo l'argomento nella pagina sugli ambienti virtuali.

Se mai esegui pip install e vedi un avviso sull'installazione nel Python di sistema (o un messaggio che ti dice di passare --break-system-packages), fermati. È il segnale per creare un venv.

Quando pip non riesce a installare un pacchetto

Alcuni errori comuni e cosa significano:

  • Could not find a version that satisfies the requirement …: di solito un errore di battitura nel nome del pacchetto, oppure il pacchetto richiede una versione di Python più recente della tua.
  • error: Microsoft Visual C++ 14.0 or greater is required (Windows): il pacchetto ha un'estensione nativa e serve una toolchain di compilazione C++. Installa i Build Tools di Microsoft oppure cerca una wheel precompilata (la maggior parte dei pacchetti popolari le fornisce).
  • Permission denied: stai cercando di installare nel Python di sistema senza i permessi di root. La soluzione giusta non è sudo pip install, ma un ambiente virtuale.
  • ModuleNotFoundError dopo l'installazione: quasi sempre pip install ha messo il pacchetto in un Python diverso da quello che esegue il tuo script. Controlla which python e which pip (macOS/Linux) oppure where python / where pip (Windows). O, in modo più affidabile, usa python -m pip install ....

Le alternative moderne a pip

Alcuni strumenti che sentirai nominare, tutti compatibili con pip e pensati per risolvere problemi specifici:

  • uv: un installatore e risolutore di dipendenze molto più veloce. Sostituisce direttamente la maggior parte dei comandi pip.
  • pipx: installa strumenti da riga di comando (come black, ruff, httpie) in venv isolati, così sono disponibili ovunque senza entrare in conflitto con le dipendenze dei progetti.
  • poetry e hatch: gestori di progetto che riuniscono in un unico strumento la gestione degli ambienti virtuali, la risoluzione delle dipendenze e la build.

Il primo giorno non te ne serve nessuno. Impara prima pip; passa agli altri quando il problema che risolvono diventa anche il tuo.

Prossimo argomento: gli ambienti virtuali

Pacchetti e ambienti virtuali vanno di pari passo. Hai visto perché; la prossima pagina esamina venv nel dettaglio: creazione, attivazione, disattivazione e le piccole convenzioni che tengono in ordine i progetti Python.

Domande frequenti

Cos'è pip in Python?

pip è l'installatore di pacchetti di Python: lo strumento che scarica e installa librerie di terze parti dal Python Package Index (PyPI). pip install requests recupera la libreria requests e la mette dove il tuo interprete Python può importarla. È incluso in ogni installazione recente di Python 3.

Come installo pip?

Arriva insieme a Python. Se pip --version segnala un comando mancante, esegui python -m ensurepip --upgrade oppure python -m pip install --upgrade pip. Su macOS e Linux, usa pip3 se il semplice pip non viene trovato: punta all'installazione di Python 3.

Come aggiorno pip?

Esegui python -m pip install --upgrade pip. Usare python -m pip invece del semplice pip garantisce che l'aggiornamento riguardi l'interprete Python che stai davvero usando: un dettaglio piccolo ma importante quando hai più versioni di Python installate.

Devo installare i pacchetti a livello globale o in un ambiente virtuale?

In un ambiente virtuale, sempre, per qualsiasi progetto che non sia uno script usa e getta. Le installazioni globali causano conflitti di versione tra progetti e sporcano il Python di sistema. La risposta breve è il modulo venv (integrato), di cui parliamo nella pagina sugli ambienti virtuali.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA