Guida introduttiva agli ambienti virtuali in Python

Pubblicato: 2022-11-07

In questo articolo imparerai come iniziare con gli ambienti virtuali in Python, sia nei sistemi operativi Windows che Linux.

Quando inizi a lavorare su più progetti nel tuo ambiente di sviluppo locale, ti imbatterai spesso in problemi di dipendenza. La creazione di ambienti virtuali per ciascuno dei tuoi progetti può aiutarti a gestire meglio le dipendenze e i requisiti del progetto.

Per sfruttare il vantaggio degli ambienti virtuali in Python, impariamo a creare e attivare ambienti virtuali.

Cosa sono gli ambienti virtuali?

Gli ambienti virtuali sono ambienti isolati e indipendenti che contengono il codice e le dipendenze di un progetto.

Ma perché dovresti usare ambienti virtuali?

Bene, gli ambienti virtuali ti consentono di installare e utilizzare versioni diverse delle stesse librerie per vari progetti. L'utilizzo di ambienti virtuali garantisce inoltre che non vengano apportate modifiche sostanziali quando due o più progetti utilizzano versioni diverse. Comprendiamo questo in modo più dettagliato.

Installazione di pacchetti in Python

La libreria standard Python viene fornita con diversi moduli utili per il test delle unità, l'interazione con il sistema operativo, l'utilizzo di date e orari e altro ancora.

Tuttavia, quando si lavora su progetti Python, è spesso necessario installare altri pacchetti, sviluppati dalla comunità Python. Ciò è particolarmente vero per applicazioni come il web scraping per la raccolta di dati, l'apprendimento automatico e le applicazioni web.

Per installare e gestire questi pacchetti, puoi usare conda o pip.

Ogni progetto richiede un set specifico di pacchetti che è necessario installare. Tuttavia, quando installi tutti i pacchetti nel tuo ambiente di sviluppo sul tuo computer locale, tutti i progetti condividono i pacchetti installati a livello globale.

local-dev-env

Allora perché questo è un problema?

Bene, potresti avere N pacchetti nel tuo ambiente di sviluppo. Tuttavia, il progetto su cui stai lavorando attualmente potrebbe richiederne solo 3. Quando tutti i tuoi progetti condividono installazioni comuni, è molto difficile identificare quale dei progetti ha richiesto quale dei pacchetti installati, le dipendenze associate a ciascun progetto.

C'è un'altra limitazione a questo approccio. Supponiamo di avere un progetto Django 2.2 nella libreria del progetto. Decidi di iniziare a lavorare su un progetto che utilizza Django 4. Quindi installi la versione più recente di Django nello stesso ambiente di sviluppo.

Cosa succede all'installazione esistente?

Viene rimosso e sostituito dalla versione di Django che hai installato. Con le versioni stabili più recenti, alcune funzionalità potrebbero essere state deprecate. E i tuoi precedenti progetti Django potrebbero non funzionare come previsto.

versione-diff

Riassumendo la nostra discussione finora: la gestione delle dipendenze diventa difficile quando i pacchetti sono tutti installati in un ambiente comune perché i progetti richiedono il proprio set di librerie per essere eseguiti.

Come funzionano gli ambienti virtuali

Finora, abbiamo visto le sfide associate all'installazione di pacchetti in un ambiente di sviluppo globale (installazioni a livello di sistema). Questo ci motiva a capire come gli ambienti virtuali affrontano questa limitazione.

Quando crei e attivi un ambiente virtuale per i tuoi progetti Python, puoi installare solo i pacchetti richiesti per il progetto corrente.

Python-ambienti-virtuali

Rivisitando l'esempio dei progetti Django, con ambienti virtuali è possibile eseguire sia i progetti Django 2.2 che Django 4, senza alcun conflitto. Questo perché le installazioni di Django non sono più installazioni a livello di sistema ma sono limitate agli ambienti virtuali dei rispettivi progetti.

In sostanza: gli ambienti virtuali sono ambienti isolati che contengono sia il codice che le dipendenze per un progetto.

Vantaggi degli ambienti virtuali

Vantaggi degli ambienti virtuali

Ora che hai imparato come funzionano gli ambienti virtuali in Python, enumeriamo i vantaggi del loro utilizzo:

  • Gli ambienti virtuali forniscono un ambiente di sviluppo isolato per i singoli progetti consentendoci di installare solo i pacchetti necessari per il progetto specifico.
  • Poiché gli ambienti virtuali dei progetti sono sia indipendenti che isolati, progetti diversi possono utilizzare versioni diverse della stessa libreria, a seconda dei requisiti. Con gli ambienti virtuali, non devi preoccuparti delle autorizzazioni di sistema per installare le librerie e configurare l'ambiente di sviluppo.
  • Dopo aver installato i pacchetti in un ambiente virtuale, puoi acquisire le dipendenze del progetto in un file Requirements.txt. Ciò consente ad altri sviluppatori di replicare lo sviluppo e l'ambiente del progetto e di installare i pacchetti richiesti utilizzando un unico comando.

Strumenti per creare ambienti virtuali

Strumenti per creare ambienti virtuali

Finora, hai imparato come funzionano gli ambienti virtuali e i vantaggi del loro utilizzo. Esaminiamo alcuni strumenti popolari che puoi utilizzare per creare e gestire ambienti virtuali in Python.

# 1. Virtualenv

Virtualenv è uno degli strumenti ampiamente utilizzati per la creazione e la gestione di ambienti virtuali per i progetti Python. Un sottoinsieme delle funzionalità di virtualenv è disponibile nel pacchetto venv . Tuttavia, il pacchetto virtualenv è più veloce ed estensibile rispetto a venv .

#2. Pipenv

Con pipnev, hai sia la funzionalità dell'ambiente virtuale di virtualenv che le funzionalità di gestione dei pacchetti di pip . Utilizza gestisce i file pip per gestire le dipendenze del progetto all'interno di un ambiente virtuale utilizzando.

Puoi provare pipenv direttamente dal browser in questo playground Pipenv.

#3. Conda

Se utilizzi la distribuzione Anaconda di Python per lo sviluppo, puoi utilizzare conda per la gestione dei pacchetti e per la creazione di ambienti virtuali.

Per saperne di più, consulta questa guida completa sulla gestione degli ambienti con conda.

#4. Poesia

Poetry è uno strumento di gestione dei pacchetti che ti consente di gestire le dipendenze in tutti i progetti Python. Per iniziare a usare Poetry, devi avere installato Python 3.7 o una versione successiva.

#5. Venv

Come accennato, venv offre un sottoinsieme delle funzionalità di virtualenv ma ha il vantaggio di essere integrato nella libreria standard di Python, a partire da Python 3.3.

È prontamente disponibile con l'installazione di Python e non richiede l'installazione di pacchetti esterni. Lo useremo in questo tutorial per creare e lavorare con ambienti virtuali.

Come creare un ambiente virtuale Python in Ubuntu

Per seguire il resto di questo tutorial, devi avere un'installazione locale di Python 3. Assicurati di eseguire Python 3.5 o una versione successiva.

Questa sezione descrive i passaggi per creare e attivare ambienti virtuali in una macchina Ubuntu Linux. Gli stessi passaggi possono essere utilizzati anche su altre distribuzioni Linux.

Per una gestione più semplice, creiamo una directory di progetto e cd in essa; Creeremo venv all'interno di questa directory.

 $ mkdir my_project $ cd my_project

La sintassi generale per creare un ambiente virtuale per il tuo progetto Python è python3 -m venv <venv-name-or-path> . Dopo aver eseguito questo comando, verrà creato un ambiente virtuale chiamato my_env nella directory di lavoro corrente:

 $ python3 -m venv my_env

Come attivare e installare i pacchetti all'interno di un ambiente virtuale

Dopo aver creato l'ambiente virtuale, puoi attivarlo e installarvi i pacchetti richiesti. Per attivare l'ambiente virtuale è possibile eseguire il seguente comando:

 $ source my_env/bin/activate

Dopo aver attivato un ambiente virtuale, puoi eseguire il comando pip list per ottenere l'elenco dei pacchetti installati:

 $ pip list
immagine-3

Finora non abbiamo installato alcun pacchetto, quindi dovresti essere in grado di vedere setuptools e pip , installati per impostazione predefinita, in ciascuno degli ambienti virtuali creati.

L'installazione di pip all'interno dell'ambiente virtuale consente di installare i pacchetti necessari per il progetto specifico; questo è il motivo per cui hai un ambiente di sviluppo indipendente per ogni progetto.

Ora che hai attivato l'ambiente virtuale, puoi installarvi pacchetti specifici del progetto usando pip. Ad esempio, installiamo le richieste Python, uno dei pacchetti Python più scaricati, che fornisce diverse funzioni utili per inviare richieste HTTP per lavorare con le API web.

 $ pip install requests

Quando installi la libreria delle richieste, vedrai che la libreria delle richieste viene installata insieme a tutti i pacchetti richiesti da essa.

install-libraries-in-python-virtual-environment
 $ pip list
visualizza-librerie-in-python-ambiente-virtuale

È possibile utilizzare il comando pip freeze e reindirizzare l'output a un file Requirements.txt, come mostrato:

 $ pip freeze > requirements.txt

Se esamini il contenuto della directory del progetto corrente, vedrai che il file Requirements.txt è stato creato.

 $ ls # my_env requirements.txt

È possibile disattivare l'ambiente virtuale dopo aver lavorato al progetto eseguendo il comando seguente:

 $ deactivate

Come creare un ambiente virtuale Python in Windows

In generale, per lo sviluppo si preferisce un ambiente Linux. Se utilizzi una macchina Windows, puoi considerare l'utilizzo del sottosistema Windows per Linux (WSL) per configurare un ambiente terminale Ubuntu per lo sviluppo locale.

Se utilizzi una macchina Windows, puoi utilizzare Windows PowerShell o il prompt dei comandi e creare ambienti virtuali utilizzando il comando seguente:

 > python -m venv <path-to-venv>

Come attivare un ambiente virtuale

L'attivazione di ambienti virtuali su una macchina Windows è diversa a seconda che si stia lavorando sul prompt dei comandi o su Windows PowerShell.

Se ti trovi nel prompt dei comandi, esegui il comando seguente per attivare l'ambiente virtuale:

 > <path-to-venv>\Scripts\activate.bat

In alternativa, se utilizzi Windows PowerShell, l'esecuzione di questo comando attiverà l'ambiente virtuale:

 > <path-to-venv>\Scripts\Activate.ps1

È possibile installare tutti i pacchetti richiesti all'interno dell'ambiente virtuale.

Per disattivare gli ambienti virtuali, puoi eseguire il comando deactivate , sia dal prompt dei comandi che da Windows PowerShell.

Conclusione

In questo articolo, abbiamo discusso dei limiti delle installazioni a livello di sistema e di come rendono difficile la gestione delle dipendenze tra i progetti Python. Gli ambienti virtuali in Python forniscono un modo per gestire meglio le dipendenze fornendo un ambiente di sviluppo isolato per i singoli progetti.

Tra gli strumenti ampiamente utilizzati per la creazione e la gestione di ambienti virtuali in Python, hai imparato a usare venv , che è integrato nella libreria standard di Python per creare e attivare ambienti virtuali.

All'interno dell'ambiente virtuale dedicato di un progetto, è possibile installare versioni di librerie specifiche per un progetto. Questi requisiti possono quindi essere acquisiti in un file Requirements.txt, che consente ad altri sviluppatori di replicare facilmente l'ambiente del progetto.

Quando avvii il tuo prossimo progetto Python, assicurati di utilizzare ambienti virtuali per una migliore gestione delle dipendenze. Buona codifica!