uv - Nuovo gestore per pacchetti Python, progetti e ambienti

I vantaggi di Python uv

Indice

Python uv (pronunciato “you-vee”) è un moderno e ad alte prestazioni pacchetto e gestore di progetti Python scritto in Rust. È stato progettato come sostituzione plug-and-play per gli strumenti tradizionali di gestione dei pacchetti Python come pip, pip-tools, virtualenv, pipx e pyenv, mirando a semplificare e accelerare i flussi di lavoro di sviluppo Python.

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

uv python ultra-violet spa

Funzionalità principali di uv

  • Velocità eccezionale: uv è significativamente più veloce degli strumenti tradizionali — tipicamente 8–10 volte più veloce di pip senza cache, e fino a 80–115 volte più veloce con una cache calda.
  • Strumento tutto-in-uno: Combina l’installazione dei pacchetti, la risoluzione delle dipendenze, la gestione degli ambienti virtuali, la gestione delle versioni di Python, la creazione di progetti e l’esecuzione di script in un unico strumento.
  • Compatibilità: Offre un’interfaccia a riga di comando compatibile con pip, rendendola facile da adottare senza una curva di apprendimento ripida.
  • Gestione robusta delle dipendenze: Fornisce una risoluzione precisa delle dipendenze e il supporto per i file di blocco per ambienti riproducibili.
  • Ambienti virtuali automatici: Crea e gestisce automaticamente gli ambienti virtuali, riducendo la configurazione manuale.
  • Supporto multi-piattaforma: 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 sei sicuro del motivo per cui usare uv?

  • Prestazioni: Riduce drasticamente i tempi di installazione dei pacchetti e di risoluzione delle dipendenze.
  • Semplicità: Unifica diversi strumenti in uno, semplificando la configurazione e la gestione dei progetti.
  • 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 con gli standard attuali per l’imballaggio Python.

Esempi di utilizzo

Proviamo qualcosa di eccitante!

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

Questo crea una directory del progetto, configura un ambiente virtuale, installa le dipendenze e 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 a singolo file senza file di requisiti separati.

Confronto con gli strumenti tradizionali

Funzione uv pip/virtualenv Poetry
Velocità Molto veloce Lenta Modera
Ambienti virtuali Automatici Manuali Automatici
Risoluzione delle dipendenze Avanzata Base Avanzata
Gestione delle versioni di Python No (richiede pyenv) No
Supporto per i file di blocco No (richiede pip-tools)
Esecuzione degli script Integrazione No Limitata

Come installare e iniziare a utilizzare UV sul tuo sistema

Per installare e iniziare a utilizzare 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: Installa tramite pip (se hai Python installato)
pip install uv

Nota: Questo metodo non è consigliato per l’accesso globale a meno che non sappia esattamente cosa stai facendo, poiché potrebbe ingombrare l’ambiente Python del sistema.

  1. Installazione tramite pipx (per un’installazione isolata a livello utente)
pipx install uv

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

Iniziare

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

  • Creare un ambiente virtuale:
uv venv test
  • Attivarlo su Linux/macOS:
source test/bin/activate
  • Attivarlo su Windows:
.\test\Scripts\activate

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

Inizializzare un nuovo progetto

uv init

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

Aggiungere dipendenze

Aggiungi un pacchetto:

uv add

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

Sincronizzare le dipendenze

Installa tutte le dipendenze nell’ambiente:

uv sync

Oppure, utilizza l’interfaccia compatibile con pip:

uv pip install

Questo assicura che tutte le dipendenze siano installate in base al tuo file di blocco.

Eseguire script

Utilizza:

uv run script.py

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

Integrazione con il shell (opzionale)

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

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

Installazione di versioni specifiche di Python

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

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

Note aggiuntive

Download automatici: Per default, uv scaricherà automaticamente e installerà le versioni di Python richieste se non sono presenti nel sistema.

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

Aggiornamenti: Puoi aggiornare le versioni di Python gestite da uv all’ultima versione di patch con:

uv python upgrade 3.12

O aggiornare tutte le versioni installate:

uv python upgrade

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

In sintesi, uv fornisce strumenti flessibili e potenti per installare, gestire e utilizzare versioni specifiche di Python nei tuoi progetti.

Come UV individua gli interpreti Python disponibili su diversi sistemi

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

  • Installazioni Python gestite:
    UV inizia a cercare nella directory specificata dalla variabile d’ambiente UV_PYTHON_INSTALL_DIR, dove memorizza le proprie versioni di Python gestite.
  • PATH del sistema:
    Su macOS e Linux, UV controlla per eseguibili denominati python, python3 o python3.x (dove x è un numero di versione) nelle directory elencate nel PATH del 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 da 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:
    Ogni eseguibile individuato viene interrogato per i suoi metadati di versione. Solo gli eseguibili che corrispondono alla versione richiesta (o vincolo di versione) vengono considerati. I file non eseguibili vengono ignorati.
  • Preferenze e fallback:
    Per default, UV preferisce le installazioni di Python del sistema, ma puoi regolare questa opzione per preferire quelle gestite o utilizzare solo quelle gestite o del 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 trovare e utilizzare correttamente l’interprete Python giusto su diversi sistemi operativi e ambienti.