Nel vasto ecosistema di Python, uno degli strumenti più essenziali e utilizzati è pip, il gestore di pacchetti ufficiale. Senza pip, gestire le dipendenze e installare librerie da PyPI (Python Package Index) sarebbe un’operazione macchinosa e piuttosto laboriosa. Oggi tantissimi software, strumenti e librerie Python sono disponibili su pip principalmente perché PyPI + pip sono diventati lo standard de facto per la distribuzione di software Python. E non pensiate di trovarvi soltanto applicazioni per tecnici e professionisti: su Libraries.io e su Pepy.tech potete divertirvi a “sfogliare” i numeri dei pacchetti più scaricati e utilizzati usando pip.
Python è ormai, da tempo, uno dei linguaggi di sviluppo più popolari al mondo. Ci si fa veramente di tutto ed è utilizzato in molteplici ambiti: Data Science, Machine Learning/AI, Web development, DevOps/Scripting, Automazione e RPA (robotic process automation), Cybersecurity, sviluppo in ambito gaming e molto altro ancora. Il linguaggio è progettato per essere leggibile quasi come l’inglese, è semplice ma allo stesso tempo versatile, è disponibile su tutte le possibili piattaforme: Linux, macOS, Windows, Android,…
Guardate cosa si può fare con Python e pip, anche da Windows!
Se ci seguite abitualmente, sapete che Windows 10 e Windows 11 integrano WSL (Windows Subsystem for Linux) ovvero un sottosistema direttamente supportato da Microsoft che permette di eseguire un ampio ventaglio di distribuzioni Linux. Il pinguino e le sue applicazioni, insomma, possono essere eseguite senza dover riavviare il sistema e senza mai abbandonare Windows.
Ebbene, installando una distro Linux come Ubuntu, Python e pip sono già pronti per essere utilizzati, senza il bisogno di alcun passaggio aggiuntivo:
wsl --install -d Ubuntu-24.04
Giusto per fare un esempio, citiamo rembg, un pacchetto per la rimozione automatica dello sfondo dalle immagini. Possiamo installarlo nella macchina Ubuntu su WSL impartendo i seguenti due comandi:
pip install rembg
pip install onnxruntime
Creiamo quindi uno script Python ( nano bgremover.py
) inserendo al suo interno quanto segue:
from rembg import remove
from PIL import Image
input_path = 'woman.jpg'
output_path = 'output.png'
with open(input_path, 'rb') as inp_file:
input_data = inp_file.read()
output_data = remove(input_data)
with open(output_path, 'wb') as out_file:
out_file.write(output_data)
Prendiamo quindi questa immagine di esempio da Unsplash, premiamo Windows+R
quindi digitiamo \\WSL$
per accedere al file system della macchina WSL (cartella \\WSL$\Ubuntu-24.04\home\nome-utente\
) e incolliamola con il nome woman.jpg
.
Se scriviamo quando segue per avviare lo script Python basato rembg, l’immagine della modella raffigurata nella foto sarà automaticamente privato dello sfondo:
python3 bgremover.py
Per verificarlo rapidamente, basta digitare explorer.exe output.jpg
: l’immagine prodotta sarà immediatamente aperta con il visualizzatore foto predefinito di Windows.
This environment is externally managed: come risolvere con Python e pip
Quando si utilizza pip all’interno di un ambiente Python che è gestito da un package manager di sistema, come apt (Ubuntu/Debian), dnf (Fedora/RHEL) o conda, appare il messaggio seguente:
This environment is externally managed.
Il motivo è che a partire da Python 3.11, nei sistemi Linux che gestiscono Python tramite il package manager di sistema, è automaticamente creato il file /usr/lib/python3.x/EXTERNALLY-MANAGED
(o percorso equivalente a seconda della distribuzione). Tale file impedisce di default l’uso del comando pip install
per installare pacchetti globalmente, al fine di evitare conflitti con i pacchetti gestiti dal sistema.
Utilizzo di un ambiente virtuale
Il miglior modo per risolvere e godersi l’installazione dei pacchetti con pip, consiste nell’attivare un ambiente virtuale. Si tratta di un’area isolata dal resto del sistema all’interno del quale si possono installare liberamente i pacchetti, certi che non interferiscano mai con il resto del sistema.
Per procedere in tal senso, si può digitare quanto segue:
python3 -m venv myenv # o python
source myenv/bin/activate # Su Windows: myenv\Scripts\activate
pip install nome_pacchetto
Al posto di myenv
basta assegnare un nome all’ambiente virtuale che si vuole creare.
Per uscire dall’ambiente virtuale, è sufficiente impartire il comando deactivate
.
Nel caso in cui, successivamente, si volesse riabilitare lo stesso ambiente virtuale, basta limitarsi al comando source myenv/bin/activate
, avendo cura di specificare il nome corretto.
Ovviamente, più pacchetti pip possono coesistere nello stesso ambiente virtuale, ed è proprio uno dei principali motivi per cui si usano gli ambienti virtuali. Per questo motivo, è sempre bene scegliere i nomi degli ambienti virtuali in maniera sensata, così da ricordare cosa contiene cosa.
Da tenere presente che nel caso in cui si installassero pacchetti che dipendono da versioni incompatibili delle librerie, si possono sperimentare conflitti e comportamenti anomali anche all’interno dello stesso ambiente virtuale. Per questo è importante:
- Specificare le versioni nei file
requirements.txt
. - Usare
pip freeze
per salvare l’elenco delle versioni in uso.
Conclusioni
L’ecosistema Python continua a dimostrarsi estremamente versatile e potente, soprattutto grazie a strumenti come pip, che semplificano enormemente la gestione delle dipendenze.
L’integrazione tra Windows e Linux tramite WSL, con tante distribuzioni che partecipano all’iniziativa, rende ancora più accessibile l’uso di Python, anche per chi lavora in ambienti eterogenei.
Con l’introduzione di alcune restrizioni in Python relative alla gestione esterna dell’ambiente, è diventato fondamentale adottare buone pratiche come l’uso degli ambienti virtuali. Questi ultimi permettono di installare pacchetti senza “interferenze”, facilitano la gestione dei progetti e prevengono possibili conflitti. Investire qualche minuto nella configurazione di un ambiente ben strutturato garantisce stabilità, portabilità e maggiore controllo sul proprio workflow di sviluppo.