Generazione Chirurgica dei Requirements

📦 Generazione Chirurgica dei Requirements

In un workflow professionale, esistono due approcci per generare un file di dipendenze pulito: l’Analisi Statica del codice (per progetti esistenti “sporchi”) e la Disciplina dell’Ambiente Virtuale (per nuovi progetti).

1. Metodo Analisi Statica: pipreqs

pipreqs è lo strumento ideale quando hai un progetto e vuoi generare i requirements basandoti esclusivamente sugli import effettivamente presenti nei tuoi file .py.

Installazione

pip install pipreqs

Utilizzo

Spostati nella root del tuo progetto ed esegui:

pipreqs . --force --encoding utf-8

Perché usare pipreqs invece di pip freeze?

  • Precisione: Scansiona il codice sorgente e identifica solo i moduli importati.
  • Pulizia: Esclude pacchetti installati nell’ambiente ma non usati dallo script.
  • Compatibilità: Specifica le versioni basandosi su quelle attualmente installate nel sistema.

2. Metodo Avanzato: pigar

Se pipreqs non dovesse bastare (ad esempio se hai dipendenze complesse o vuoi sapere dove viene usato un pacchetto), pigar è l’alternativa più sofisticata.

Installazione

pip install pigar

Utilizzo

pigar generate

Vantaggio: pigar è in grado di gestire meglio le differenze tra il nome del pacchetto su PyPI e il nome del modulo importato nel codice.


3. Metodo “Architect Choice”: Ambiente Isolato e pip-tools

Se stai iniziando un progetto o vuoi il controllo totale, la best practice è separare le dipendenze dirette dalle dipendenze transitive (le dipendenze delle dipendenze).

Workflow con pip-tools

  1. Crea un file chiamato requirements.in e scrivi solo i moduli che usi direttamente:
    requests
    pandas
    fastapi
    
  2. Installa pip-tools:
    pip install pip-tools
    
  3. Compila il file finale:
    pip-compile requirements.in
    

Risultato: Otterrai un requirements.txt con tutte le versioni “pinnate” e commentate, indicando quale pacchetto ha richiesto quale dipendenza.


📉 Diagramma Decisionale (Mermaid)


💡 Note dell’Architetto (Critical Thinking)

  • Ambienti “usa e getta”: Come Software Architect, ti consiglio di non aver paura di distruggere e ricreare il venv. Se il tuo requirements.txt è corretto, la ricostruzione dell’ambiente deve essere un’operazione deterministica da pochi secondi.
  • Versione di Python: Ricorda che pipreqs potrebbe non rilevare librerie standard di Python che sono state rimosse o aggiunte tra diverse versioni (es. pathlib, zoneinfo).
  • Sicurezza: Prima di distribuire il file, controlla sempre che non siano rimasti pacchetti legati a chiavi di accesso locali o path assoluti (molto raro con questi tool, ma possibile con plugin custom).

Tags: #Python #Pip #Pipreqs #DevOps #DependencyManagement*

Last updated on Friday, March 13, 2026
Built with Hugo
Theme Stack designed by Jimmy