[Python] pip freeze, o "come essere sicuri delle dipendenze che sto installando"

Alessandro Dentella sandro.dentella a gmail.com
Ven 9 Ott 2020 12:51:53 CEST


On Fri, Oct 09, 2020 at 12:09:18PM +0200, Luca Bacchi wrote:
> Io faccio esattamente come con node:
> 
>     pip3 install -r requirements.txt
>     pip3 freeze > requirements-lock.txt
> 
> Dentro requirements.txt elenco le librerie che uso io, il primo livello, e
> spesso (non sempre) non indico il versioning. In questo modo so che
> 
>     pip3 install -r requirements.txt
> 
> installa sempre le ultime versioni.
> 
> Poi però
> 
>     pip3 freeze > requirements-lock.txt
> 
> mi permette di avere uno screenshot dell'ambiente esatto: tutte le librerie
> con le esatte versioni installate.

questo modo di operare "sembra" come yarn/npm ma in realtà si basa sulla
diligenza del programmatore di ricordarsi di eseguire "pip freeze".

Per esperienza non funziona in un ambienete normale. Ci sarà sempre qualcuno che
dimentica di farlo e oi sono problemi per ci deve usare qull'ambiente.

Pip-tools e Peotry sopperiscono a questo problema costringendoti ovviamente a
qualche limite. Ad esempio devi essere nella cartella giusta. Se ad esempio usi
un virtualenv per due progetti differenti (un progetti ed una libreria ad
esempio) per aggiungere a quel virtualenv devi magari cambiare cartella.

Sia Poetry che pip-tools ti danno una visibilità molto migliore di come un
pacchetto è finito nel tuo virtualenvm e per me è cosa buona e giusta.

Poetry usa il nuovo formato pyproject.toml e pip-tools usa setup.py o
semplicemente requirements.txt.

Se usi pyproject.toml avrai poblemi da un progetto che usa pip con l'opzione -e,
questo è documentato (è un limite di pip, non di Petry).


sandro


Maggiori informazioni sulla lista Python