Python e data science, moduli vecchi

Ciao a tutti,

Recentemente ho notato che i miei script propedeutici di data science incominciavano a dare Warning chilometrici e allora volendo approfondire ho scoperto che i moduli python legati alla data science presenti su fedora erano più che obsoleti (in particolare scikit-learn non viene aggiornato da quasi 2 anni).

Chiaramente attraverso pip si può aggiornare manualmente il pacchetto e ottenere l’ultima versione disponibile. Ho provato a contattare via email gli owner dei pacchetti e non ho ottenuto risposta (forse è per via del periodo estivo… comunque non mi aspettavo una risposta).

Personalmente non ho tempo per stare dietro ai pacchetti di fedora, quindi quello che posso fare è mettere un annuncio in modo che magari qualche anima interessata possa prendere a cuore il settore scientifico di fedora. Un esempio di pacchetti che andrebbero monitorati legati a fedora e la data science sono:

numpy (fedora 1.16.4, upstream 1.17.0) pandas (fedora 0.23.4, upstream 0.25.1) scikit-learn (fedora 0.19.1, upstream 0.21.3) matplotlib (fedora 3.0.3, upstream 3.1.1)

Un salutone a tutti,
Simone

Ciao Simone.
Quando parli di warnings, intendi deprecation warnings? Cioe’ il software che usi funziona ancora ma ti avvisa che cambieranno delle interfacce, ad esempio? Il software lo scrivi te su quella macchina, o lo prendi da qualcun altro? Perche’ se l’hai scritto te (con le stesse versioni di pacchetti attuali) non capisco che warning ti potrebbe dare. Se il codice l’avevi scritto sotto altre versioni di fedora con diversi pacchetti, e’ normale che ci siano warning riferiti a feature che magari si chiameranno in modo diverso. Se invece il codice l’hai ricevuto da altri, stai iniziando a intravedere la punta del cosiddetto “dependency hell”, ossia quando le dipendenze iniziano a incasinarsi, cosa che si manifesta ad es quando si vuole un software multi-distro o addirittura multi-piattaforma.

La soluzione migliore e’ usare il package manager del linguaggio che stai usando, in questo caso pip. Ti basta creare un requirements file, e usare cose come virtualenv(/wrapper) o pipenv per gestire i vari ambienti di sviluppo. Oppure se vuoi toglierti il pensiero del multi-distro, puoi crearti un container, ad es docker o singularity.

dnf/rpm e’ comodissimo per installare pacchetti “di sistema”, ma non lo userei per farci sviluppo, perche’ i programmi/librerie/framework evolvono ancora piu’ velocemente di quanto gia’ faccia fedora.
Ed inoltre, non puoi avere versioni multiple della stessa libreria: pensa ad es se dovessi cambiare il tuo software per usare una libreria aggiornata che ha delle feature nuove, mentre stai ancora lavorando sul “branch” con la libreria vecchia; con dnf non si riesce a fare (su centos/rhel ci sono delle collections per alcuni pacchetti, non so se ci siano anche su fedora).

Vai di pip e togliti il pensiero :slight_smile:

La mia non era una richiesta d’aiuto. I pacchetti legati alla data science sono in continuo aggiornamento ed è mio interesse primario avere la versione più aggiornata. Quindi è chiaro che quando riprendo in mano dei miei vecchi script mi assicuro personalmente di avere accesso alle versioni più aggiornate dei moduli e mi preoccupo personalmente di aggiornare i vari metodi e attributi deprecati. Non è questo il punto.

La mia era una semplice segnalazione che alcuni dei moduli (che vanno molto di moda) pacchettizzati per fedora fanno riferimento a versioni anche vecchie quasi due anni. Visto che ritengo un interesse comunitario avere sulla piattaforma fedora un ambiente di sviluppo aggiornato che non dia migliaia di warning per via di problemi di deprecazione interni ai moduli (matplotlib ma soprattutto scikit-learn sono i problemi principali che ho riscontrato). Qua il problema non è di trovare un workaround, ma di normalizzare la situazione. Come ho detto, purtroppo in questo periodo sono straincasinato e per provare a fare qualcosa di mio pugno (tra cui imparare tutta la pacchettizzazione fedora) potrebbe richiedere più di 6 mesi. Per questo ho segnalato la cosa perché magari qualcuno potrebbe prendere a cuore il settore scientifico di fedora e aggiornare i pacchetti.

P.S. Numpy e pandas li ho aggiunti così perché mi andava. Ma il pacchetto di scikit-learn ha veramente bisogno di una svecchiata, anche perché quella versione non sarà più funzionante con python 3.8. È chiaro che se non c’è qualcuno che sta assiduamente dietro a questi pacchetti non si riuscirà ad avere sempre le nuove versioni. Ma qua parliamo di due anni di un pacchetto che non è orfano e di un package owner che non risponde ai miei solleciti via email. Immagino semplicemente che il responsabile del pacchetto l’abbia lasciato andare ed è un peccato perché parliamo di scikit-learn… Anche matplotlib ha bisogno di essere aggiornato per via di incompatibilità prossime con le nuove versioni di python.

Se vuoi provare te ad aggiornare dei pacchetti, ti consiglio di giocare con COPR: lo si puo’ collegare ad un repo git contenente i file delle build, per tenere sempre tutto sotto controllo.
Io ci sto lavorando per un pacchetto, puoi prendere spunto da quello: https://copr.fedorainfracloud.org/coprs/bebosudo/olive-editor/
E anche dalla discussione qui su fol che ha originato il pacchetto: https://forum.fedoraonline.it/viewtopic.php?id=26542

Se vuoi una mano con gli RPM chiedi pure.

Ho visto ora che su koji è presente una build per f31 compilata con la versione aggiornata di scikit-learn. Stesso discorso per matplotlib. Alla fine le email hanno fatto il loro dovere.