18. Installare Moduli di Terze Parti - PIP e Ambienti Virtuali - Programmare in Python

18. Installare Moduli di Terze Parti - PIP e Ambienti Virtuali

Ciao a tutti ragazzi e ragazze e benvenuti a questa nuova lezione!

Durante questo corso abbiamo imparato a usare varie funzioni integrate di Python e a importare i moduli della Standard Library.

In questa lezione vedremo come sia possibile installare moduli esterni creati da altri developers, sia su Windows che su Linux o Mac OS, e nel fare ciò parleremo di Ambienti Virtuali e PIP.


Il Python Package Index

Il Python Package Index è un deposito di software scritto per Python.

Si tratta di una risorsa molto importante perché contiene al suo interno centinaia di migliaia di progetti scritti da varie organizzazioni o singoli developers, e non parlo solo di semplici progetti sviluppati in un fine settimana ma di librerie complesse e strutturate utilizzate da migliaia di aziende e altre attività, nel mondo reale. Da questo repository è possibile scaricare queste librerie gratuitamente e iniziare a creare software anche molto avanzato, senza dover reinventare la ruota.


pip list

I moduli del Python Package Index vengono installati da terminale, tramite un programma chiamato PIP, che dovreste già avere nel vostro computer in quanto è presente, tipicamente, nel pacchetto di installazione di Python.

I vari moduli possono essere installati in due aree: a livello di sistema o in un ambiente virtuale.

Partiamo dall'analisi di quanto presente a livello di sistema.

Aprite quindi un terminale e date il comando pip list.

Nota: su sistemi Linux e Mac OS capita spesso di avere 2 versioni di Python installate (2.X e 3.X) e per questo motivo, a seconda della vostra personale configurazione potreste dover usare il comando "pip3" invece di "pip" per installare moduli utilizzabili con Python 3.

pip list

Se il comando ha funzionato a dovere, dovreste ora vedere un elenco di pacchetti installati a livello di sistema come ad esempio:

pip list

# output

Package                 Version
----------------------- -------------
pip                         22.0.4
setuptools            58.1.0

Qualora non otteniate alcun elenco potreste dover installare pip.

Su Windows la procedura più immediata prevede tipicamente la reinstallazione di Python secondo quanto mostrato nella lezione 01. Introduzione e Installazione di Python.

Nello specifico, fate attenzione alle varie spunto selezionate!

Su Linux, il terminale dovrebbe restituirvi il comando opportuno a seconda del vostro sistema operativo.

I comandi sono tipicamente i seguenti

# comando tipico su Ubuntu e Pop OS
sudo apt install python3-pip

# comando tipico su Arch e Manjaro
sudo pacman -S python-pip

Installare package a livello di sistema è sconsigliato per vari motivi.

Uno di questo è il fatto che progetti diversi richiedono spesso versioni diverse degli stessi package e questo può causare conflitti.

Inoltre su alcuni sistemi sono richiesti permessi speciali per poter installare del nuovo software.

Ed è qui che entrano in gioco gli ambienti virtuali.


Cosa sono gli Ambienti Virtuali?

Gli Ambienti Virtuali o Virtual Environments di Python sono uno strumento che permette di creare degli spazi indipendenti dal resto del sistema in cui è possibile testare e lavorare con Python e pip.

Concretamente avremo una cartella che conterrà vari file necessari al funzionamento dell'ambiente e una copia dei binary di Python, e dentro questa potremo poi installare tutti i moduli con la versione che vogliamo in base al progetto su cui stiamo lavorando, ma che richiederanno l'attivazione di questo ambiente per essere utilizzati.

Esistono vari strumenti per creare ambienti virtuali, e noi useremo uno chiamato venv che è presente di default con l'installazione di Python.


Creare Ambienti Virtuali su Windows, Linux e Mac OS

Anzitutto è importante sapere quale comando utilizzare per poter richiamare una shell di Python da terminale.

Dovrete in sostanza usare lo stesso comando usato finora nel corso, con l'aggiunta di alcune informazioni aggiuntive che informino Python che volete creare un ambiente virtuale.

Spostatevi quindi in una cartella dove avete permessi di scrittura (per testare va benissimo anche la cartella Documenti o Scrivania/Desktop) e date il comando:

python -m venv venv

Così facendo abbiamo detto a Python (comando: python o python3) che intendiamo usare il modulo venv (-m venv) per creare un ambiente virtuale in una nuova cartella chiamata venv.

Avremmo potuto quindi cambiare la parte finale del comando per creare un ambiente in una cartella chiamata in qualsiasi modo.


Come attivare un Ambiente Virtuale

Per poter usare un ambiente virtuale dobbiamo anzitutto attivarlo.

Il comando di attivazione è leggermente diverso su Windows rispetto a Linux e Mac OS.

Dal terminale di sistema, nel percorso contenente anche la cartella appena creata, date il comando

# su Linux e Mac OS
source ./nome_cartella_ambiente/bin/activate

# su Windows, da PowerShell
 .\nome_cartella_ambiente\Scripts\Activate.ps1 

# su Windows, da cmd
nome_cartella_ambiente\Scripts\activate

Windows e l'errore relativo all'attivazione degli ambienti virtuali

Su Windows riceverete quasi sicuramente un errore relativo all'esecuzione di Script sul sistema.

Ci sono diverse soluzioni al riguardo, e tutte prevedono l'esecuzione di un comando specifico per dire a Windows che intendete eseguire comunque questo script.

Vi lascio questo link dove vengono vagliate diverse opzioni, potendo scegliere tra queste una che più si addica alle vostre esigenze.

Tenete conto che per usare un ambiente virtuale dovrete attivarlo ogni volta che intendete installare nuovi package o eseguire uno script che utilizzi i package in esso installati.

Vi ricordo che nel video allegato a questa lezione troverete tutte le istruzioni - passo passo.

Saprete che un ambiente virtuale è stato attivato correttamente quando vedrete la scritta (venv) all'inizio dell'output del vostro terminale


Come usare gli Ambienti Virtuali

A questo punto, se l'ambiente virtuale è stato attivato correttamente, dovreste essere pronti ad installarci dei nuovi package!

Per fare ciò useremo pip.

Provate anzitutto a verificare che tutto funzioni correttamente dando nuovamente il comando pip list.

Dovreste ottenere un output di questo tipo

(venv) utente@sistema:~/Desktop$ pip list
Package    Version
---------- -------
pip        22.0.2
setuptools 59.6.0


Come installare package in un Ambiente Virtuale

Siamo ora pronti finalmente per installare dei package nel nostro sistema!

Per installare Django, uno dei web framework Python più utilizzati di cui parlo anche nei miei corsi completi, date il comando

pip install django

Volendo potete ora ridare il comando pip list, che dovrebbe mostrarvi stavolta tra i package installati, anche Django ed alcuni altri package

pip list

# output
Package    Version
---------- -------
asgiref    3.5.2
Django     4.0.5
pip        22.0.2
setuptools 59.6.0
sqlparse   0.4.2
tzdata     2022.1

Ora che il package Django è stato installato, possiamo finalmente utilizzarlo, e potremo accederci da una shell interattiva interna all'ambiente virtuale, in maniera analoga a quanto facciamo con i moduli della Standard Library.

Ad ambiente attivo, avviate quindi una shell interattiva col comando python, e date i seguenti comandi che dovrebbero darvi un output simile a quello qui mostrato

>>> import django
>>> django.VERSION

# output
(4, 0, 5, 'final', 0)


Disattivare un Ambiente Virtuale

Cosi come vengono attivati, gli ambienti virtuali possono essere anche disattivati, ad esempio per riaccedere all'ambiente di sistema discusso in precedenza.

Per fare ciò è sufficiente dare il comando deactivate.

A questo punto, la scritta (venv) dovrebbe essere sparita dall'output.

Nota: l'ambiente virtuale verrà inoltre disattivato alla chiusura del terminale di sistema, e dovrete quindi riattivarlo ogni volta.