Che cos’è e a cosa serve pipreqs? All’interno del mondo Python è uno strumento utilissimo che ti permette di individuare tutti i pacchetti all’interno del tuo progetto e creare un file requirements automaticamente così da non doverli trovare a mano.
Diciamocelo: quante volte ti è capitato di dover elencare tutti quei package e dipendenze in generale all’interno del tuo progetto Python affinché gli utilizzatori del tuo stesso progetto sapessero da subito quali fossero le dipendenze?
Ecco: Dimentica tutto questo.
“Donne è arrivato l’arroti… pipreqs“.
Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!
Devi sapere che questo blog l’ho creato con l’intenzione di raccogliere tutti quei problemi che ho avuto durante la mia vita lavorativa: no tranquillo! Non parlo di problematiche personali 😀
E questo articolo non è da meno! Scoprirai sia che cos’è sia a che cosa serve pipreqs, ma non solo: ti mostrerò anche come usarlo.
Che cos’è pipreqs?
Prima di tutto pipreqs nient’altro è che un package scritto in Python di cui ti lascio le referenze ufficiali direttamente a distanza di un click.
Si tratta per l’appunto di un pacchetto Python che puoi usare sia con le versioni precedenti alla terza, sia con quelle successive.
Beh… Non c’è molto altro da dire: direi che dovremmo passare direttamente a scoprire un’altra cosa 😀
A che cosa serve pipreqs?
Come ti dicevo all’inizio dell’articolo, ti sarà sicuramente capitato diverse volte di avere a che fare con un grande insieme di pacchetti Python all’interno del tuo progetto.
A un certo punto avrai avuto anche l’esigenza di rilasciarlo o comunque renderlo disponibile ai tuoi clienti, amici, parenti, serpenti, a chiunque.
Solitamente, nei progetti software, quando si tratta di condividere torna parecchio comodo per l’utilizzare finale non solo scrivere un README di cui ho parlato anche qui, ma in questo README di solito si spiega anche come installare le dipendenze esterne al progetto per far sì che… Banalmente funzioni.
Esempio terra-terra: ho scritto un progetto dove eseguo chiamate REST ad un’API esterna. Di solito, ripeto, di solito, si usa il pacchetto requests.
Se l’utente finale non sa che deve installare “requests” come pacchetto beh… Che fa, se lo immagina per capire come mai non funziona il tuo stesso progetto che hai realizzato e condiviso con lui con tanto amore?
Solitamente si elencano i pacchetti nel README: ma se starai con me fino in fondo, capirai come automatizzare non solo la generazione di un file dove sono elencati tutti i pacchetti necessari a far funzionare il tuo programma.
No, scoprirai anche come far sì che l’utilizzatore finale usi pip per installarli tutti in automatico grazie al potere di pipreqs.
Ma è doveroso fare un passo indietro.
Come far sì che pip installi tutti i pacchetti di cui abbiamo bisogno in un progetto
Facciamo ancora una volta un esempio terra-terra: ok?
Immagina che nel tuo progetto siano necessari tre pacchetti: requests, matplotlib e telegram.
Nel caso non lo sapessi, pip permette di usare un comando:
pip install nome_del_pacchetto
“Grazie al ca… Lorenzo!”
Sì lo so: ma era doveroso partire da questo punto.
Il comando di installazione di pip, può diventare ricorsivo.
Per intenderci:
pip install -r
Quindi il flag “-r” rende ricorsivo il comando di installazione di pip.
Beh… Ricorsivo, quindi si ripete.
Eppure fare una cosa stile:
pip install -r requests, matplolib, telegram
Ti accorgerai che non funziona proprio bene.
Arriviamo al punto successivo di questa storiella.
Cosa ne dici se, ci scrivessimo su un file tutti i pacchetti da installare con la relativa versione?
E magari, per essere coerenti con la nomenclatura, lo chiamiamo “requirements.txt”? 🙂
Per intenderci, il file “requirements.txt” dovrebbe avere questo aspetto:
requests==1.2.3
mathplotlib==3.7.11
telegram==0.2.4
A questo punto, abbiamo un file che contiene tutti i pacchetti di cui abbiamo bisogno con relativa versione.
Ah lo preciso: questo file va messo nella stessa cartella del tuo progetto!
Ciò detto, se noti le righe hanno tutte lo stesso formato.
E qui possiamo lanciare la ricorsione! Come?
pip install -r requirements.txt
Il comando così composto fa sì che pip install in maniera ricorsiva, tutti quei pacchetti elencati nel file “requirements.txt”!
Ah! Altra precisazione doverosa: il file puoi pure chiamarlo come vuoi tu, il comando generico è:
pip install -r nome_del_tuo_file.txt
Ora, però: arriva tutto il bello che abbiamo detto.
A che cosa serve pipreqs in tutto questo processo?
Abbiamo capito che con pip possiamo creare un file dove elenchiamo tutti i pacchetti di cui abbiamo bisogno.
Lo usiamo per lanciare un comando di installazione ricorsivo.
E… Che due maroni!
Ricordi ad inizio articolo che ti dicevo che vogliamo scrollarci di dosso il processo di trovare tutti i pacchetti di cui abbiamo bisogno?
Dunque, punto uno: installare “pipreqs”.
pip install pipreqs
Arrivato a questo punto, posizionati nella cartella del tuo progetto.
Dopodiché, lancia il seguente comando:
pipreqs .
Il punto nel comando, serve a specificare che vogliamo eseguirlo nella cartella in cui siamo posizionati.
Sta proprio qui il bello di questo comando.
Con tutto quello che abbiamo capito prima, pipreqs serve proprio a colmare questo gap:
Che cosa farà pipreqs? Analizzerà tutti i file Python dentro il tuo progetto e individuerà i pacchetti e dipendenze esterne che sono necessarie per poterli eseguire.
Non solo.
Si occuperà anche di capire quale versione di ciascun pacchetto è necessaria.
NON SOLO!
… Ti genererà un file “requirements.txt” dentro la cartella del tuo progetto.
NON SOLO!
Questo file “requirements.txt” conterrà l’elenco dei pacchetti necessari al tuo progetto con la relativa versione.
Insomma: ci risparmia una fatica immonda 😀