uv – Nuovo gestore di pacchetti, progetti e ambienti Python

I vantaggi di Python uv

Indice

Python uv (pronunciato “you-vee”) è un moderno strumento di gestione pacchetti e progetti Python ad alte prestazioni, scritto in Rust. È progettato come una sostituzione diretta dei tradizionali strumenti di gestione pacchetti Python come pip, pip-tools, virtualenv, pipx e pyenv, con l’obiettivo di semplificare e accelerare i flussi di lavoro di sviluppo Python.

uv è sviluppato da Astral, il team dietro il popolare linter Python Ruff, ed è progettato per affrontare i comuni punti critici dell’ecosistema Python—come installazioni lente, conflitti di dipendenze e una gestione complessa degli ambienti—sfruttando le prestazioni di Rust e una moderna architettura software.

uv python ultra-violet spa

Funzionalità principali di uv

  • Velocità eccezionale: uv è significativamente più veloce dei tradizionali strumenti—in genere 8–10 volte più veloce di pip senza caching, e fino a 80–115 volte più veloce con una cache calda.
  • Strumento tutto-in-uno: Combina installazione di pacchetti, risoluzione delle dipendenze, gestione degli ambienti virtuali, gestione delle versioni di Python, creazione di scaffold di progetti ed esecuzione di script in un unico strumento.
  • Compatibilità: Offre un’interfaccia da riga di comando compatibile con pip, rendendolo facile da adottare senza una ripida curva di apprendimento.
  • Gestione robusta delle dipendenze: Fornisce una risoluzione precisa delle dipendenze e supporto per i file di lock per ambienti riproducibili.
  • Ambienti virtuali automatici: Crea e gestisce automaticamente gli ambienti virtuali, riducendo la configurazione manuale.
  • Supporto multipiattaforma: Funziona su macOS, Linux e Windows.
  • Installazione autonoma: Può essere installato senza richiedere Python o Rust, utilizzando un semplice installatore o curl.

uv vs poetry vs pdm vs pip performance comparison

Ancora non sicuro sul perché usare uv?

  • Prestazioni: Riduce drasticamente i tempi di installazione dei pacchetti e di risoluzione delle dipendenze.
  • Semplicità: Unifica più strumenti in uno, ottimizzando la configurazione e la gestione del progetto.
  • Affidabilità: Fornisce ambienti coerenti e riproducibili con messaggi di errore chiari e risoluzione dei conflitti.
  • Standard moderni: Supporta pyproject.toml per la configurazione del progetto, allineandosi agli standard attuali di packaging Python.

Casi d’uso esempio

Proviamo qualcosa di entusiasmante!

  • Avvio di un nuovo progetto:
uv init myproject
cd myproject
uv add requests
uv run python script.py

Questo crea una directory di progetto, configura un ambiente virtuale, installa le dipendenze ed esegue gli script in un ambiente isolato.

  • Gestione di script con dipendenze inline:
uv add --script script.py requests
uv run script.py

uv può gestire le dipendenze per script monofile senza file di requisiti separati.

Confronto con gli strumenti tradizionali

Funzionalità uv pip/virtualenv Poetry
Velocità Molto veloce Lento Moderata
Ambienti virtuali Automatici Manuali Automatici
Risoluzione dipendenze Avanzata Base Avanzata
Gestione versione Python Sì No (richiede pyenv) No
Supporto file di lock Sì No (richiede pip-tools) Sì
Esecuzione script Integrata No Limitata

Come posso installare e iniziare a usare UV sul mio sistema

Per installare e iniziare a usare uv sul tuo sistema, segui questi passaggi semplici:

Installazione

  1. Installatore autonomo (consigliato)
    • Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh

Oppure, se preferisci wget:

wget -qO- https://astral.sh/uv/install.sh | sh
  • Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  • Versione specifica: Puoi richiedere una versione specifica includendola nell’URL, ad esempio https://astral.sh/uv/0.7.15/install.sh.
  1. Alternativa: Installazione via pip (se hai Python installato)
pip install uv

Nota: Questo metodo è meno consigliato per l’accesso a livello di sistema a meno che tu non sappia cosa stai facendo, poiché potrebbe appesantire l’ambiente Python di sistema.

  1. Installazione via pipx (per installazioni isolate, a livello di utente)
pipx install uv

Questo metodo è più pulito per l’accesso globale se utilizzi già pipx.

Prime nozioni

Per Verificare l’installazione - Esegui:

uv

Dovresti vedere un menu di aiuto che conferma che uv è installato e pronto all’uso.

Per Creare e Attivare un Ambiente Virtuale

  • Crea un venv:
uv venv test
  • Attivalo su Linux/macOS:
source test/bin/activate
  • Attivalo su Windows:
.\test\Scripts\activate

Ora puoi usare uv pip install per installare i pacchetti in questo ambiente.

Inizializza un Nuovo Progetto

uv init

Questo crea un pyproject.toml e un .gitignore per il tuo progetto.

Aggiungi Dipendenze

Aggiungi un pacchetto:

uv add

Questo aggiorna pyproject.toml e genera/aggiorna il file di lock.

Sincronizza le Dipendenze

Installa tutte le dipendenze nel tuo ambiente:

uv sync

Oppure, usa l’interfaccia compatibile con pip:

uv pip install

Questo garantisce che tutte le dipendenze siano installate secondo il tuo file di lock.

Esegui Script

Usa:

uv run script.py

Questo gestisce automaticamente l’ambiente e le dipendenze per il tuo script.

Integrazione con Shell (Opzionale)

Per un flusso di lavoro più fluido, puoi aggiungere l’integrazione con la shell al tuo file .zshrc o .bashrc per attivare automaticamente un ambiente virtuale predefinito e creare un alias di pip a uv pip.

Seguendo questi passaggi, avrai uv installato e sarai pronto a gestire i tuoi progetti Python con velocità e facilità.

Installazione di specifiche versioni di Python

Puoi usare uv per installare specifiche versioni di Python e gestirle per i tuoi progetti.

  • Installa l’ultima versione stabile di Python:
    uv python install
    
    Questo comando scarica e installa la versione stabile di Python più recente disponibile.
  • Installa una versione specifica:
    uv python install 3.12
    
    Questo installa la patch release più recente di Python 3.12 (es. 3.12.3).
  • Installa una versione di patch esatta:
    uv python install 3.12.3
    
    Questo installa esattamente Python 3.12.3.
  • Installa più versioni:
    uv python install 3.9 3.10 3.11
    
    Questo installa Python 3.9, 3.10 e 3.11.
  • Installa una versione che corrisponda a un vincolo:
    uv python install '>=3.8,=3.11"
    
    Questo modifica il requisito di versione di Python del progetto.

Note aggiuntive

Download automatici: Di default, uv scaricherà e installerà automaticamente le versioni di Python richieste se non vengono trovate sul tuo sistema.

Python di sistema: uv può utilizzare installazioni di Python esistenti se presenti, oppure puoi forzare l’uso del Python di sistema con il flag --no-managed-python.

Aggiornamento: Puoi aggiornare le versioni di Python gestite da uv all’ultima patch release con:

uv python upgrade 3.12

Oppure aggiornare tutte le versioni installate:

uv python upgrade

L’aggiornamento tra versioni minori (es. da 3.12 a 3.13) non è supportato.

In sintesi, uv fornisce strumenti flessibili e potenti per l’installazione, la gestione e l’utilizzo di specifiche versioni di Python nei tuoi progetti.

Come UV individua gli interpreti Python disponibili su sistemi diversi

UV individua gli interpreti Python disponibili su sistemi diversi controllando una serie di posizioni ben definite e interrogando ciascun candidato per i suoi metadati di versione. Ecco come funziona:

  • Installazioni di Python gestite:
    UV cerca prima nella directory specificata dalla variabile d’ambiente UV_PYTHON_INSTALL_DIR, dove archivia le sue versioni di Python gestite.
  • PATH di sistema:
    Su macOS e Linux, UV controlla gli eseguibili denominati python, python3 o python3.x (dove x è un numero di versione) nelle directory elencate nel PATH di sistema. Su Windows, cerca python.exe.
  • Posizioni specifiche di Windows:
    Su Windows, UV controlla anche il registro di Windows e gli interpreti Python del Microsoft Store utilizzando l’output di py --list-paths.
  • Ambienti virtuali:
    Se un ambiente virtuale è attivo o specificato, UV controlla l’interprete in quell’ambiente per la compatibilità prima di cercare altrove.
  • Interrogazione dei metadati:
    Ciascun eseguibile scoperto viene interrogato per i suoi metadati di versione. Solo gli eseguibili che corrispondono alla versione richiesta (o al vincolo di versione) vengono presi in considerazione. I file non eseguibili vengono ignorati.
  • Preferenza e fallback:
    Di default, UV preferisce le installazioni di Python di sistema, ma puoi modificare questa preferenza con opzioni per preferire le versioni gestite o usare solo versioni gestite/di sistema. Se non viene trovato un interprete adatto, UV può scaricare e installare la versione richiesta.

Questo processo di individuazione robusto garantisce che UV possa localizzare e utilizzare affidabilmente l’interprete Python corretto su diversi sistemi operativi e ambienti.

Iscriviti

Ricevi nuovi articoli su sistemi, infrastruttura e ingegneria AI.