Nuova sezione libri disponibile!

Virtualenv: gestiamo meglio le dipendenze in Python

Ludovico Russo

lettura in 3 minuti

Ho deciso di riesumare un vecchio articolo (uno dei primi) che avevo scritto sul mio blog, e che si era perso durante la migrazione. Leggengolo, l'ho anche corretto ed aggiornato un po'!

Virtualenv in Python

Oggi l'amico Michele (come dice lui) ha avuto problemi nell'installare alcuni componenti Python sul proprio Mac, per questo motivo ho deciso di scrivere questo tutorial, che presenta una soluzione ad uno dei problemi classici dello sviluppo software: come faccio ad evitare conflitti su diversi progetti che utilizzano librerie diverse?

Spesso infatti, quando si sperimenta con qualsiasi linguaggio di programmazione, ci si ritrova a dover utilizzare librerie diverse che hanno dipendenze in conflitto tra di loro. Molti linguaggi hanno trovato diverse soluzioni per evitare il conflitto dei pacchetti. In Python, è stata sviluppata una soluzione molto elegante basata sui virtualenv.

Virtualenv in Python

I Virtualenv (ambienti virtuali, appunto) sono un modo semplice per creare progetti Python isolati, in cui installare diverse librerie che non andranno in conflitto con altre librerie in altri ambienti.

Da un po' di anni (da quando li ho scoperti), ho preso l'abitudine di utilizzare un virtualenv per ogni progetto su cui lavoro, in modo da avere tutto preciso ed ordinato nei miei millemila progetti.

Installiamo virtualenv

Per installare virtualenv sulla proprima macchina, basta digitare su un terminale il comando

$ sudo pip install virtualenv

e inserire la password.

Tale procuderura richiede solo l'installazione di pip, che solitamente è già installato nelle ultime versioni di Python.

Creiamo un Virtualenv

Utilizzare virtualenv è molto semplice. Supponiamo di voler iniziare un nuovo progetto su un blog, sviluppato in python ed in particolare per mezzo di Flask.

Per prima cosa, nella nostra cartella di sviluppo principale, creiamo una nuova cartella (blog) in cui lavorare per il progetto.

$ mkdir blog
$ cd blog

A questo punto, creiamo l'ambiente virtuale, utilizzando il comando

$ virtualenv <nome ambiente virtuale>

che, nel caso specifico, sarà

$ virtualenv env

Il nome dell'ambiente virtuale può essere quello che preferiamo, tuttavia solitamente il nome standard che si da è appunto env.

Dopo l'esecuzione del programma, troverete una nuova directory chiamata env nella directory blog.

Attiviamo un ambiente virtuale

Una volta creato l'ambiente virtuale, prima di utilizzarlo bisogna attivarlo. Per farlo, basta fare il source del file env/bin/activate, che viene creato all'interno della cartella env.

Cioè, da shell, lanciamo il comando

$ source env/bin/activate

A questo punto, su ogni riga del prompt dei comandi, apparirà la scritta (env) prima della solita stringa del prompt. Questo indica che l'ambiente è attivo. Possiamo quindi installare nuove librerie python (ulizzando pip), che esisteranno solo all'interno del nostro ambiente virtuale. In questo caso, non è necessario utilizzare il comando sudo, perchè ci troviamo all'interno di una cartella privata.

(env)$ pip install flask

Ora flask sarà installato all'interno del nostro ambiente virtuale.

Esempio Shell

Lavoriamo all'interno dell'ambiente virtuale

Una volta attivato l'ambiente ed installate le librerie, siamo abbastanza liberi su come muoverci per iniziare un progetto. Lavorate come volete voi. Quello che si fa abitualmente è creare il nostro progetto direttamente nella cartella principale blog, ricordandoci di ignorare, ad esmepio tramite gitignore, la cartella env.

Chiudiamo l'ambiente virtuale

Per chiudere un ambiente virtuale, basta digirare il comando

(env)$ deactivate

Vedrete che la stringa (env) sparirà dal vostro prompt.

Ti è piaciuto questo post?

Registrati alla newsletter per rimanere sempre aggiornato!

Ci tengo alla tua privacy. Leggi di più sulla mia Privacy Policy.

Ti potrebbe anche interessare

HB Cloud Tutorial #1 - Uso dei Led
Iniziamo ad utilizzare la piattaforma di Cloud Robotics
HB Cloud Tutorial #2 - Uso dei Bottoni
Rieccomi con il secondo tutorial legato all'uso dei bottoni per il robot **DotBot-ROS**. In questo tutorial, vedremo come configurare ed utilizzare in Python un bottone attaccato ad un pin GPIO del Raspberry Pi 3.
HB Cloud Tutorial #3 - I Motori
I Motori sono una delle parti essenziali dei robot. In questo tutorial, vederemo come è possibile in modo semplice ed intuitivo implementare un programma in Python che controlla i motori in base a comandi inviati via Wifi al Robot.
Inviare Goals alla Navigation Stack - versione nodo ROS Python
Inviare un goal all ROS navigation stack utilizzando un nodo Python
Controllare siBOT dalla piattaforma HBR
Come controllare il manipolatore siBOT utilizzando la piattaforma HBR
Sviluppare un rilevatore di fiamma con la visione artificiale
Sviluppare un rilevatore di fiamma con la visione artificiale
Scriviamo un Blog in Python e Flask
Tutorial su come implementare, a partire da zero, un blog personale utilizzando Python e Flask! Prima parte!
Un laboratorio di Fisica con Arduino e Python
Primi esperimenti con Arduino e Python per realizzare un semplice laboratorio di fisica sfruttando la potenza di Python e la versatilità di Arduino
Canopy: una Pythonica alternativa a Matlab
Presento questo interessante tool python che può essere considerato una buona alternativa a Matlab per l'analisi dei dati!
Spyder, un'altra alternativa in Python a Matlab
Una velocissima prova del tool interattivo Spyder per l'analisi scientifica in Python
Simuliamo il moto parabolico in Python e Spyder
Un piccolo tutorial per iniziare ad utilizzare Spyder con Python
Python + Arduino = Nanpy
Programmare Arduino in Python con Nanpy
Utilizzo di Nanpy con il sensore di temperatura/umidità della famiglia DHT
Come utilizzare Nanpy col sensore DHT di temperatura e Umidità
Accendere led con Arduino e Telegram
Un bot telegram in grado di controllare Arduino realizzato da 3 ragazzi del Liceo Stampacchia
Implementiamo un bot Telegram con Python
Una semplice guida per iniziare a muovere i primi passi nello sviluppo di chatbot Telegram con Python
Pillole di Python: pyscreenshot
Una semplice tutorial che mostra il funzionamento della libreria pyscreenshot
Python Decorators
Introduzione ai decoratori in Python
TDD con Flask e PyTest per lo sviluppo di API REST. Parte 1
Tutorial su come usare il Test Driver Development (TDD) con Flask e PyTest per sviluppare delle semplici API REST
Implementiamo un bot Telegram con Python - I Comandi
Vediamo come gestire i comandi del nostro bot in Telegram
4 (+1) Libri su Python (in Inglese) da cui imparare
Una lista di libri su Python (in Inglese) da cui ho imparato a programmare
Leggere i codici a barre con OpenCV e zbar in Python
Come usare Python per leggere i codici a barre degli alimenti e ricavarne alcune informazioni utili
TDD con Flask e PyTest per lo sviluppo di API REST. Parte 2
Tutorial su come usare il Test Driver Development (TDD) con Flask e PyTest per sviluppare delle semplici API REST
Sviluppiamo un bot Telegram che legge i codici a barre degli alimenti
Implementiamo un bot Telegram in grado di leggere ed analizzare le immagini per la lettura ed interpretazione dei codici a barre
TDD con Flask e PyTest per lo sviluppo di API REST. Parte 3
Tutorial su come usare il Test Driver Development (TDD) con Flask e PyTest per sviluppare delle semplici API REST
Divertiamoci sviluppando UI da terminale con ASCIIMATICS
Le UI da terminale fanno molto anni '80, però sono sempre diventerti da implementare. Oggi vi voglio introdurre ad una semplice libreria per creare questo tipo di applicazione.
Sviluppiamo un Robot con tecnologie Open Source
Inizio una serie di videoguide, in cui voglio introdurvi al mondo della robotica di servizio in modo pratico, facendo vedere come è possibilile, sfruttando tecnologie completamente Open Source, quali Arduino, Raspberry Pi, ROS e Docker, costruire un piccolo robot di Servizio.
Parliamo come GMaps: come creare file audio con gtts (Google Text to Speech) in Python
gtts è una libreria in Python per sfruttare le API di Google Text to Speech per generare file audio dal testo
Robot Open Source - Introduzione a Docker
È disponibile il video "Introduzione a Docker".
I chatbot possono Parlare? Sviluppiamo un bot telegram che manda messaggi vocali
Usiamo le API di sintesi vocale di google per creare un bot in grado di mandare messaggi vocali
Robot Open Source - Docker e Raspberry
È disponibile il video "Docker e Raspberry".