Raspberry Pi: aggiornare la versione di Python a bordo del sistema

| |

Articolo che anticipa una seconda parte dedicata al rifacimento dello script che si occupa di modificare lo stato di Home Mode del sistema tado°. Ho deciso di abbandonare la via di Bash e portare il tutto su Python sfruttando delle librerie che mi permettono di far comunicare agilmente il mio FRITZ!Box con tado° (basandomi sulla presenza in casa di dispositivi conosciuti). RaspberryOS propone nativamente la vecchia 2.7 ormai abbondantemente deprecata, e quella 3.5 un po’ ferma al palo. Ho quindi fatto il necessario salto per mettermi un po’ più al passo con i tempi, ti spiego brevemente come.

Prima di partire

Come da tradizione del blog, appoggio delicatamente qui il solito messaggio promozional-farmaceutico per evitare brutti scherzi o lamentele postume:

Raspberry Pi: aggiornare la versione di Python a bordo del sistema 1 Attenzione:
Prima di partire, il solito consiglio: occhio sempre a quello che tocchi e che rimuovi, effettua dei backup del tuo sistema per sicurezza. Potrai così tornare indietro in caso di problemi.

Se non sai come effettuare il backup e il ripristino del tuo RPi, ne ho parlato in questo articolo: raspiBackup: backup senza la necessità di togliere la scheda SD (in alternativa, c’è sempre RPi: backup della scheda SD (Windows / macOS)).

Cominciamo: collegati via SSH al tuo RPi e fai partire un aggiornamento completo del sistema operativo e dei pacchetti attualmente installati a bordo, ti basterà lanciare due comandi:

sudo apt-get update
sudo apt-get full-upgrade

Il tempo impiegato dipende dallo stato di aggiornamento del tuo RPi (più è indietro e più dovrà scaricare e installare dati), dalla velocità della linea Internet e della scheda SD che monti, porta pazienza, potrebbe volerci un po’ (nota a margine: tieni il tuo sistema aggiornato, falla diventare un’operazione di routine).

Python: aggiornamento

Premetto: io ho usato la versione 3.8.12 con la quale lavoro anche nei repository GitHub con le Actions, nulla ti vieta però di scegliere una versione differente e più aggiornata tra quelle disponibili nello spazio FTP di Python: python.org/ftp/python. I comandi da lanciare su terminale sono i seguenti, puoi tranquillamente fare copia-incolla in blocco e lanciare il tutto direttamente (occhio solo all’eventuale cambio di versione di Python se non vuoi usare la versione 3.8.12):

sudo apt install rustc
sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libopenjp2-7 libtiff5 libffi-dev libjpeg-dev bluetooth libbluetooth-dev -y
sudo pip3 install pybluez
wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz
tar xzvf Python-3.8.12.tgz
cd Python-3.8.12/
./configure --enable-optimizations
make -j 8
sudo make install

L’operazione durerà parecchi minuti, porta pazienza e non interrompere mai alcun processo a meno che tu non sia realmente costretto.

Al termine, l’installazione di Python aggiornata si troverà in /usr/local/bin/ (quindi /usr/local/bin/python3.8). Tu ora dovresti poter fare pulizia delle cartelle usate, quindi:

sudo rm -r Python-3.8.12
rm Python-3.8.12.tar.xz

L’aggiornamento – salvo rogne – è completato e disponibile adesso sulla tua macchina (ti anticipo che potrebbe accadere anche qualche errore critico ma non impattante durante la compilazione). Questo non rimuoverà in nessun caso le vecchie versioni di Python. Ti metto qui un piccolo paragrafo bonus dedicato agli alias di sistema che ti consentiranno di richiamare facilmente Python e Pip senza necessità di specificarne la versione in coda (python3.8 e pip3, per capirci).

Bonus: nano ~/.bashrc

Il file .bashrc è un file di script che viene eseguito quando un utente accede alla macchina Linux (RPi compreso). Il file contiene generalmente una serie di configurazioni per la sessione terminale e ciò include l’impostazione o l’abilitazione di colori, autocompletamento, cronologia della shell, alias di comando e altro. In riferimento proprio agli alias, possiamo usare questo file per specificare che python e pip sono entrambi comandi che portano alle relative versioni aggiornate sul tuo Raspberry OS.

Lancia quindi il comando nano ~/.bashrc, spostati in fondo al file e aggiungi queste righe:

alias python='/usr/local/bin/python3.8'
alias pip=pip3

Se vuoi essere certo che la nuova versione di Python si trovi nella /usr/local/bin, puoi sempre eseguire un whereis python3.8, questo ti porterà quasi certamente a qualcosa di simile:

Raspberry Pi: aggiornare la versione di Python a bordo del sistema 2

Salva il file, esci ed eseguilo per ricaricare il tutto: source ~/.bashrc. Lanciando ora un python --version dovresti ottenere in risposta la versione che hai appena aggiornato. Puoi anche decidere che a un certo punto la versione appena installata diventi quella predefinita di sistema, per farlo ti toccherà lanciare un:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1

#StaySafe


Immagine di copertina: Artturi Jalli on Unsplash
Ringraziamenti:
indomus.it/guide/aggiornare-python-su-raspbian-alla-3-8-x-o-superiori-e-ripristinare-home-assistant-core
learn.sparkfun.com/tutorials/python-programming-tutorial-getting-started-with-the-raspberry-pi/configure-your-pi
itheo.tech/install-python-38-on-a-raspberry-pi

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Raspberry Pi: aggiornare la versione di Python a bordo del sistema 4 GWall

Se hai correzioni o suggerimenti puoi lasciare un commento nell'apposita area qui di seguito o contattarmi privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! Puoi usare Satispay, PayPal, Buy Me A Coffee o Patreon :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Commenti
Inline Feedbacks
View all comments