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).
pipreqspipreqs è lo strumento ideale quando hai un progetto e vuoi generare i requirements basandoti esclusivamente sugli import effettivamente presenti nei tuoi file .py.
pip install pipreqs
Spostati nella root del tuo progetto ed esegui:
pipreqs . --force --encoding utf-8
Perché usare pipreqs invece di pip freeze?
pigarSe pipreqs non dovesse bastare (ad esempio se hai dipendenze complesse o vuoi sapere dove viene usato un pacchetto), pigar è l'alternativa più sofisticata.
pip install pigar
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.
pip-toolsSe stai iniziando un progetto o vuoi il controllo totale, la best practice è separare le dipendenze dirette dalle dipendenze transitive (le dipendenze delle dipendenze).
pip-toolsrequirements.in e scrivi solo i moduli che usi direttamente:requests
pandas
fastapi
pip-tools:pip install pip-tools
pip-compile requirements.in
Risultato: Otterrai un requirements.txt con tutte le versioni "pinnate" e commentate, indicando quale pacchetto ha richiesto quale dipendenza.
venv. Se il tuo requirements.txt è corretto, la ricostruzione dell'ambiente deve essere un'operazione deterministica da pochi secondi.pipreqs potrebbe non rilevare librerie standard di Python che sono state rimosse o aggiunte tra diverse versioni (es. pathlib, zoneinfo).Tags: #Python #Pip #Pipreqs #DevOps #DependencyManagement*