Cos'è pdm?

PDM

PDM è un moderno gestore di pacchetti Python con supporto per PEP 582. Mira a portare la migliore esperienza di sviluppo di pacchetti a Python. In sostanza, PDM combina le funzionalità di pip, venv e pip-tools in un unico strumento, offrendo un'esperienza più coerente e intuitiva per la gestione delle dipendenze dei progetti Python.

Caratteristiche Principali:

  • PEP 582: Supporta la gestione dei pacchetti nel file .venv della cartella di progetto, eliminando la necessità di attivare manualmente gli ambienti virtuali.

  • Semplice Gestione delle Dipendenze: Un singolo file pyproject.toml per gestire tutte le informazioni relative al progetto, incluse le dipendenze, i metadati e le configurazioni di build.

  • Risoluzione Robusta delle Dipendenze: Utilizza un algoritmo di risoluzione delle dipendenze avanzato per gestire conflitti complessi tra le dipendenze.

  • Supporto per Ambienti Virtuali: Gestisce gli ambienti virtuali in modo implicito, anche se non strettamente necessari grazie a PEP 582. È comunque possibile utilizzare pdm venv per creare e gestire ambienti virtuali espliciti se lo si desidera.

  • Lockfile Integrato: Crea e gestisce automaticamente un file pdm.lock per garantire build riproducibili. Questo file contiene le versioni precise di tutte le dipendenze, inclusi gli indici delle dipendenze transitivi.

  • Script di Build Personalizzati: Permette di definire script di build personalizzati nel file pyproject.toml per automatizzare i processi di build.

  • Interfaccia a Linea di Comando Intuitiva: Fornisce una linea di comando semplice ed intuitiva per eseguire le operazioni di gestione dei pacchetti.

  • Supporto per Plugin: È estensibile tramite plugin, consentendo di integrare funzionalità aggiuntive.

Vantaggi dell'utilizzo di PDM:

  • Semplicità: Semplifica la gestione delle dipendenze rispetto a pip e venv.
  • Riproducibilità: Garantisce build riproducibili grazie al lockfile.
  • Coerenza: Utilizza un singolo file pyproject.toml per gestire tutte le informazioni relative al progetto.
  • Modernità: Adotta standard moderni e pratiche di sviluppo.
  • Eliminazione degli Ambienti Virtuali (quasi): Grazie a PEP 582, l'attivazione esplicita degli ambienti virtuali spesso non è necessaria.

Esempi di utilizzo:

  • pdm init: Inizializza un nuovo progetto PDM.
  • pdm add <pacchetto>: Aggiunge una dipendenza al progetto.
  • pdm install: Installa le dipendenze specificate nel file pdm.lock.
  • pdm update: Aggiorna le dipendenze alla versione più recente compatibile con le restrizioni.
  • pdm run <comando>: Esegue un comando definito nel file pyproject.toml.
  • pdm build: Costruisce il pacchetto del progetto.

PDM è una scelta eccellente per i progetti Python moderni che cercano un modo più semplice e coerente per gestire le dipendenze. Offre una valida alternativa a pip, venv e pip-tools.