Pitone

Ambienti virtuali in Python 3

Ambienti virtuali in Python 3
Come la maggior parte delle persone, odio installare pacchetti non necessari sulla mia workstation. Dopo aver finito con loro, disinstallarli non è mai abbastanza. I pacchi lasciano tonnellate di cartelle e file. Richiedono molti altri pacchetti (oscuri) anch'essi lasciati indietro sulla scia delle cose. Lentamente ma inesorabilmente queste cose si accumulano nella tua workstation e anche se potrebbero non occupare una porzione significativa del tuo spazio su disco, possono causare altri problemi.

Dipendenze precedenti

I pacchetti più vecchi potrebbero rimanere in giro e il tuo codice Python li userà felicemente. Questo non è un problema se i tuoi script Python sono pensati per essere eseguiti localmente e non per scopi industriali. Scienziati di dati, studenti e persino persone normali che automatizzano le loro attività quotidiane possono semplicemente continuare a utilizzare i vecchi pacchetti senza troppi problemi.

Il problema inizia quando spedisci il tuo codice alla produzione. Quando lo fai, è probabile che invierai solo il tuo script principale e non tutte le dipendenze del pacchetto. Ad esempio, se hai scritto un microservizio da spedire come funzione AWS Lambda, le prime righe potrebbero importare un modulo di richiesta come questo:

richiesta di importazione

Il pacchetto di richiesta fornito da AWS lambda sarà diverso da quello precedente e, di conseguenza, il programma potrebbe bloccarsi.

Conflitti

Potrebbero anche verificarsi conflitti in cui progetti diversi utilizzano versioni diverse dello stesso pacchetto. Forse alcuni dei tuoi progetti più vecchi necessitano dei vecchi pacchetti pip. Ma potresti aver bisogno del pacchetto più recente per altri progetti. Esecuzione di pip install -U aggiornerà il pacchetto sul tuo sistema operativo causando problemi quando tornerai a mantenere i tuoi progetti precedenti.

Ambienti virtuali Python

Se stai usando qualsiasi versione di Python sopra 3.5, puoi usare un modulo integrato chiamato venv per creare quelli che vengono chiamati Python Virtual Environments. Ciò che fa questo modulo è creare una cartella o directory isolata in cui possono vivere tutti i tuoi pacchetti pip e altre dipendenze. La cartella contiene anche uno script "attiva" al suo interno. Ogni volta che si desidera utilizzare un particolare ambiente virtuale, è sufficiente eseguire questo script dopo il quale è possibile accedere solo ai pacchetti contenuti in questa cartella. Se esegui pip install, i pacchetti verranno installati all'interno di questa cartella e da nessun'altra parte. Dopo aver finito di utilizzare un ambiente, puoi semplicemente "disattivarlo" e solo i pacchetti pip globali saranno disponibili per te.

Se stai usando Ubuntu 18.04 e versioni successive, non è nemmeno necessario installare il gestore di pacchetti pip sull'intero sistema. Pip può esistere solo all'interno del tuo ambiente virtuale se lo preferisci in questo modo.

Installazione di venv e creazione di ambienti virtuali

Ubuntu 18.04 LTS esce dalla scatola con Python 3.6.x, ma il modulo Python venv non è installato, né lo è pip. Installiamo solo venv.

$ apt install python3-venv

Successivamente, andiamo alla directory all'interno della quale desideri creare la directory dell'ambiente virtuale. Per me è ~/progetto1

$ cd ~/progetto1

Crea il tuo venv con il seguente comando, nota che my-env è solo il nome di quell'ambiente, puoi chiamarlo come vuoi:

$ python3 -m venv mio-ambiente

Nota: alcune installazioni di Python3, come quelle disponibili su Windows, chiami l'interprete Python usando solo python e non python3, ma cambia da sistema a sistema. Per motivi di coerenza userò solo python3.

Dopo che il comando ha terminato l'esecuzione, noterai una nuova cartella ~/project1/my-evn. Per attivare l'ambiente virtuale my-env, dovrai:

  1. Correre,
    $source ~/project1/my-env/bin/activate se stai usando Bash.
    Esistono script alternativi chiamati attiva.pesca e attiva.csh per le persone che usano rispettivamente fish e csh shell.
  2. Su Windows, lo script può essere richiamato eseguendo:
    >.\my-env\Scripts\activate.pipistrello se stai usando il prompt dei comandi, oppure,
    >.\my-env\Scripts\activate.ps1 se stai usando PowerShell.

Utilizzo di ambienti virtuali

Una volta eseguito correttamente lo script, noterai che il prompt cambia in qualcosa di simile a quello mostrato di seguito, ora puoi installare i pacchetti usando pip:

(my-env) $ pip3 richieste di installazione
## Possiamo elencare i pacchetti installati usando il comando 'pip freeze'
(my-env) $ pip3 freeze
certifi==2018.10.15
charet==3.0.4
idna==2.7
pkg-resources==0.0.0
richieste==2.20.1
urllib3==1.24.1

Finché l'ambiente virtuale è attivo (come indicato dal prompt) tutti i pacchetti verranno salvati solo nella directory dell'ambiente virtuale (my-env), indipendentemente da dove ti trovi nel file system.

Per uscire dall'ambiente virtuale, puoi digitare deactivate nel prompt e tornerai a utilizzare l'installazione a livello di sistema di Python. Puoi notare che i nuovi pacchetti che abbiamo appena installato non verranno mostrati nell'installazione pip globale.

Per sbarazzarsi dell'ambiente virtuale, elimina semplicemente la cartella my-env che è stata creata dopo aver eseguito il modulo. Puoi creare quanti di questi ambienti vuoi.

Conclusione

Con il modulo venv, gli ambienti virtuali sono ora disponibili come funzionalità standard di Python, specialmente se installi da Python.organizzazione. In precedenza, avevamo molte implementazioni di terze parti chiamate virtualenv, pyenv, ecc.

Ciò ha dato origine a software sempre più gonfiati come Anaconda, particolarmente popolare tra gli scienziati dei dati. È bello avere finalmente uno strumento semplicistico per gestire i pacchetti Python senza dover installare un sacco di altra spazzatura non correlata. Puoi leggere di più su venv qui.

I 5 migliori giochi arcade per Linux
Al giorno d'oggi, i computer sono macchine serie utilizzate per i giochi. Se non riesci a ottenere il nuovo punteggio più alto, saprai cosa intendo. I...
Battaglia per Wesnoth 1.13.6 Sviluppo rilasciato
Battaglia per Wesnoth 1.13.6 rilasciato il mese scorso, è la sesta versione di sviluppo nella 1.13.x e offre una serie di miglioramenti, in particolar...
Come installare League Of Legends su Ubuntu 14.04
Se sei un fan di League of Legends, questa è un'opportunità per testare League of Legends. Nota che LOL è supportato su PlayOnLinux se sei un utente L...