| Per chi
come me, ha utilizzato per anni microcontroller come
Arduino Nano e Uno, oltre che ESP8266, ESP32 ed ESP01, che
usano tutti la IDE di Arduino e il linguaggio di
programmazione C semplificato, il passaggio a Raspberry
PI4 e alla programazione in Python , non è stata del tutto
semplice. Confesso senza vergogna di non essere certamente una cima in programmazione... Uno degli scogli principali è stata la gestione delle librerie. Con Arduino IDE nella maggior parte dei casi è sufficiente aprire "Sketch/includi librerie" e digitare il nome di quella cercata. Solo in casi particolari è necessario fare una breve ricerca su Internet. Con Raspberry OS invece mi sono trovato in difficoltà perché nella descrizione dei progetti trovavo semplicemente l'informazione di scaricare la libreria necessaria e nell'eseguire il comando ricevevo quasi immancabilmente un messaggio di errore. Poi in Randomnerds (sito a cui sono molto grato!) ho trovato un progetto per DHT11 un sistema per creare un ambiente virtuale in cui installare la libreria necessaria. Facendo alcune ulteriori ricerche, ho trovato la risposta: nei vecchi sistemi operativi Raspian era possibile installare liberamente librerie di terze parti in Python, mentre nelle versioni successive si è implementato un sistema di sicurezza per cui esse dovevano essere inserite in un ambiente protetto, per evitare problemi di stabilità o falle di sicurezza. La spiegazione è condivisibile, ma crea qualche complessità e un uso maggiore dello spazio occupato su disco, dovendo creare più ambienti virtuali separati, o affidarsi a uno solo, con il rischio in caso di danni all'ambiente di dover ricreare un nuovo ambiente virtuale, reinstallare le varie librerie e trasferire i propri progetti. Ma veniamo alla pratica, con le istruzioni per i principianti: |
| Installazione di una libreria (ed eventuali errori) |
| Il
primo passo consiste nell'aggiornare il proprio Raspberry,
aprendo un terminale e lanciando il seguente comando: L'esecuzione del comando richiederà più o meno tempo, in base al numero di file che è necessario aggiornare. |
sudo apt update && sudo apt get upgrade |
| Il
secondo passaggio consiste nell'aggiornare o installare pip,
lanciando il seguente comando: |
sudo pip install --upgrade pip |
| Può
essere opzionale eseguire anche questo comando, che installa
il pacchetto completo di Python3: |
sudo pip install python3-ful |
| Poi,
se tutto ha funzionato, sarà sufficiente lanciare il
comando: Alcuni tutorial consigliano di non usare "sudo" prima di lanciare il comando, perchè potrebbe creare qualche problema. |
sudo pip install "mia libreria", per esempio: sudo pip install RPI.BME280 |
Però,
nonostante aver aggiornato scrupolosamente il sistema, quasi
sicuramente riceverete questo messaggio di errore:![]() Le
vecchie versioni di Rabian permettevano di installare
liberamentele librerie necessarie per i programmi che
girano sotto Python (fino alla versione bullseye)
a, mentre le nuove versioni del sistema operativo,
(Raspberry O.S.), per prevenire problemi di sicurezza e
stabilità, non permete più di installare direttamente
librerie "sconosciute", ma obbliga a installarle in un
ambiente virtuale. Naturalmente in uno stesso ambiente
virtuale è possibile installare più librerie.
|
| La creazione di un ambiente virtuale (e l'installazione della libreria) |
| Posizionarsi nella cartella in cui si è installato il programma e lanciare il seguente comando: Dopo qualche secondo, lanciare il seguente comando per verificare che l'ambiente virtuale sia stato creato: |
python3
-m menv "mioambiente", per esempio python3 -m menv zero ls -la |
![]() |
L'ambiente
virtuale denominato "zero" è stato creato e al suo interno è
stata salvata la libreria richiesta. |
| Ora
è necessario attivare l'ambiente virtuale, con il comando: |
source
"mioambiente"/bin/activate, in questo caso: source zero/bin/activate, |
![]() |
l'ambiente
è stato attivato; ora si può installare la (le9 Libreria(e)
necessaria(e) |
![]() |
Questa
, per esempio, è la libreria necessaria per utilizzare il
display OLED SSD1306, che si lancia con il comando "pip3
install adafruit_circuitpython_ssd1306" |
| E pi
si può continuare con tutte le librerie necessarie per
lanciare il proprio programma. Però spesso sono necessarie delle librerie standard di Python, come per esempio "RPi.GPIO", oppure "GPIOZERO". Potremmo sempre installarle per ogli ambiente virtuale che creeremo, con il comando "pip3 install Rpi.GPIO", oppure "pip3 install GPIOZERO". Ma
c'è un sistema piu razionale, che consente di usare
queste librerie direttamente dalla cartella di Python,
senza doverle installare tutte le volte.
|
| Come
utilizzare nel proprio ambiente virtuale le librerie
standard |
Digitando il comando "python -m venv --system-site-packages env" (al posto di "env" si può inserire il nome dell'ambiente virtuale preferito). In questo caso sarà poi sufficiente installare nel proprio ambiente virtuale esclusivamente le librerie specifiche per i vari sensori, guadagnando in semplicità e risparmio di occupazione di scheda SD o di disco. |
| A
questo punto, si può lanciare il proprio programma. |
| Nota:
per economia di spazio e di semplicità, conviene salvare
tutti i programmi che richiedeno lo stesso ambiente virtuale
nella stessa cartella, in questo caso "gpiozero". |
![]() |
| Lancio
del programma |
| Per
lanciare il programma, è sufficiente avviare un terminale,
posizionarsi sulla cartella in cui è salvato il programma e lanciare il comando: |
python
"mio programma", per esempio: python two_button.py |
| Le
vecchie versioni del sistema
operativo |
Cliccando qui, potrai scaricare l'ultima versione del sistema operativo (Bullseye) per Raspberry che permette di installare direttamente le librerie per i propri programmi con Python. Le dimensioni del file sono di circa 1 Gb. Ho inserito questa possibilità perché molti video su Youtube utilizzavano questo sistema, sicuramente più immediato me meno sicuro. Per cui se desideri installare un vecchio sistema operativo, meno sicuro, lo fai a tuo rischio e pericolo. |