Questi requisiti e casi d'uso possono essere difficili da gestire quando applicazioni diverse richiedono versioni diverse della stessa libreria. Fortunatamente, Python fornisce una soluzione robusta per isolare gli ambienti di sviluppo utilizzando ambienti virtuali.
Che cos'è un ambiente virtuale Python??
Un ambiente virtuale Python è un albero di directory autonomo che contiene un'installazione Python specifica insieme a tutte le sue librerie standard. Le applicazioni che richiedono una particolare versione della libreria possono essere isolate in questi ambienti virtuali senza inquinare il sistema o altre implementazioni di Python. Ogni ambiente virtuale è una sandbox separata, quindi puoi creare tutti gli ambienti virtuali che desideri.
Creazione e gestione di ambienti virtuali
Per creare ambienti virtuali in Ubuntu, installa prima il pacchetto di dipendenze richiesto eseguendo il comando:
$ sudo apt install python3-venvOra puoi creare ambienti virtuali eseguendo il comando:
$ python3 -m venv myenvL'esecuzione del comando sopra creerà un ambiente virtuale chiamato "myenv" nella tua home directory. Se desideri utilizzare qualsiasi altra versione di Python, puoi sostituire "python3" sopra con il percorso completo della posizione del tuo binario Python alternativo.
Per attivare l'ambiente personalizzato creato sopra, eseguire il comando:
$ source myenv/bin/activateUna volta attivato l'ambiente virtuale, il prompt della shell cambierà per riflettere l'ambiente virtuale corrente che stai utilizzando. Se esegui “sys.path" all'interno dell'interprete Python, puoi vedere che l'ambiente virtuale funziona correttamente. Python ora cercherà i pacchetti all'interno dell'ambiente personalizzato che hai appena creato.
Se il prompt della shell non mostra il nome dell'ambiente virtuale come prefisso, qualsiasi file Python che esegui utilizzerà invece il sistema Python. Quindi è necessario creare un ambiente virtuale di origine prima di eseguire un file nel tuo ambiente personalizzato.
Puoi disattivare un ambiente virtuale eseguendo il comando:
$ disattivareOgni ambiente virtuale Python include un "pyvenv.cfg" con una chiave "include-system-site-packages" impostata su "false" per impostazione predefinita. Questa chiave indica all'ambiente virtuale se utilizzare o meno i pacchetti del sito di sistema. Se impostato su "true", Python nell'ambiente virtuale esaminerà i pacchetti di sistema nel caso in cui non venga trovato un pacchetto nell'ambiente virtuale. Renderà inoltre importabili tutti i pacchetti installati dal sistema all'interno dell'ambiente virtuale.
Per eliminare un ambiente virtuale, devi solo eliminare la directory dell'ambiente virtuale e scomparirà.
È possibile creare e archiviare virtualenv su unità USB esterne. Dovrai avere un'unità USB formattata nel file system NTFS o EXT. Il file system FAT32 non supporta i collegamenti simbolici che sono un requisito per il funzionamento degli ambienti virtuali.
Utilizzo di Pip Package Manager per installare i pacchetti all'interno dell'ambiente virtuale
All'interno di un ambiente virtuale, puoi utilizzare il gestore di pacchetti pip per installare, aggiornare e disinstallare i pacchetti. È possibile eseguire il downgrade o aggiornare un pacchetto specificando un particolare numero di versione.
Puoi installare un pacchetto usando pip eseguendo il comando (sostituisci pygame con il nome del pacchetto desiderato):
$ pip installa pygame
Un repository ricercabile di pacchetti pip può essere trovato qui.
Per disinstallare un pacchetto, usa il comando:
$ pip disinstalla pygame
Per vedere tutte le versioni di un pacchetto, esegui il comando:
$ pip install pygame==
Per eseguire il downgrade o l'aggiornamento a una versione specifica, utilizzare il comando (sostituire "1.9.5" con il numero di versione desiderato):
$ pip install pygame==1.9.5
Per aggiornare un pacchetto alla versione più recente, esegui il comando:
$ pip install --upgrade pygame
Per vedere tutti i pacchetti installati nell'ambiente virtuale, esegui il comando:
$ pip list
Per salvare un elenco di pacchetti installati all'interno di virtualenv, esegui il comando:
$ pip freeze > requisiti.TXTPuoi usare i "requisiti" sopra.txt" per installare i pacchetti in blocco. Un caso d'uso è duplicare un ambiente esistente installando tutti i pacchetti da zero. Per installare pacchetti pip in blocco, esegui il comando:
$ pip install -r requisiti.TXTUtilizzo di ambienti virtuali Python con applicazioni non Python
Le applicazioni scritte in altri linguaggi di programmazione possono essere sandbox in ambienti virtuali Python purché pip o qualsiasi altro gestore di pacchetti Python forniscano binari e pacchetti per questi linguaggi/framework di programmazione alternativi.
Ecco un piccolo esempio che spiega l'installazione di Node.js in ambiente virtuale Python. Esegui i seguenti comandi uno per uno:
$ python3 -m venv my_node_env$ source my_node_env/bin/activate
$ pip installa la ruota
$ pip install nodeenv
$ nodeenv -p
$ nodeenv --version
$ nodo --version
Una volta fatto, avrai un Nodo completamente isolato.js ambiente. Puoi creare tutti gli ambienti virtuali che desideri per diversi Nodi.js applicazioni. I pacchetti installati tramite il gestore di pacchetti npm saranno limitati solo all'ambiente virtuale attivato.
Conclusione
La creazione di un ambiente virtuale Python è un modo eccellente per containerizzare gli ambienti di sviluppo. Ogni ambiente virtuale ha il proprio binario Python e il proprio set indipendente di pacchetti. Lo sviluppo di più applicazioni Python sullo stesso sistema può inquinare rapidamente la tua home directory e la directory principale e gli ambienti virtuali rendono così facile la loro manutenzione.