Python Language Creazione e utilizzo di un ambiente virtuale


Esempio

virtualenv è uno strumento per costruire ambienti Python isolati. Questo programma crea una cartella che contiene tutti gli eseguibili necessari per usare i pacchetti necessari a un progetto Python.

Installazione dello strumento virtualenv

Questo è richiesto solo una volta. Il programma virtualenv potrebbe essere disponibile attraverso la tua distribuzione. Nelle distribuzioni di tipo Debian, il pacchetto si chiama python-virtualenv o python3-virtualenv .

In alternativa, puoi installare virtualenv usando pip :

$ pip install virtualenv

Creare un nuovo ambiente virtuale

Questo è richiesto solo una volta per progetto. Quando si avvia un progetto per il quale si desidera isolare le dipendenze, è possibile impostare un nuovo ambiente virtuale per questo progetto:

$ virtualenv foo

Questo creerà una cartella foo contenente script di strumenti e una copia del binario python stesso. Il nome della cartella non è rilevante. Una volta creato l'ambiente virtuale, esso è autonomo e non richiede ulteriori manipolazioni con lo strumento virtualenv . Ora puoi iniziare a utilizzare l'ambiente virtuale.

Attivazione di un ambiente virtuale esistente

Per attivare un ambiente virtuale, è necessario un po 'di shell magica, quindi il tuo Python è quello interno a foo invece di quello di sistema. Questo è lo scopo del file di activate , che è necessario inserire nella shell corrente:

$ source foo/bin/activate

Gli utenti Windows dovrebbero digitare:

$ foo\Scripts\activate.bat

Una volta che un ambiente virtuale è stato attivato, i binari python e pip e tutti gli script installati da moduli di terze parti sono quelli all'interno di foo . In particolare, tutti i moduli installati con pip verranno distribuiti nell'ambiente virtuale, consentendo un ambiente di sviluppo contenuto. L'attivazione dell'ambiente virtuale dovrebbe anche aggiungere un prefisso al prompt come mostrato nei seguenti comandi.

# Installs 'requests' to foo only, not globally
(foo)$ pip install requests

Salvataggio e ripristino delle dipendenze

Per salvare i moduli installati tramite pip , è possibile elencare tutti i moduli (e le versioni corrispondenti) in un file di testo utilizzando il comando freeze . Ciò consente ad altri di installare rapidamente i moduli Python necessari per l'applicazione utilizzando il comando install. Il nome convenzionale per tale file è requirements.txt :

(foo)$ pip freeze > requirements.txt
(foo)$ pip install -r requirements.txt

Si noti che freeze elenca tutti i moduli, comprese le dipendenze transitive richieste dai moduli di livello superiore installati manualmente. Pertanto, potresti preferire creare manualmente il file requirements.txt , mettendo solo i moduli di livello superiore di cui hai bisogno.

Uscita da un ambiente virtuale

Se hai finito di lavorare nell'ambiente virtuale, puoi disattivarlo per tornare alla tua shell normale:

(foo)$ deactivate

Utilizzo di un ambiente virtuale in un host condiviso

A volte non è possibile $ source bin/activate a virtualenv, ad esempio se si utilizza mod_wsgi nell'host condiviso o se non si ha accesso a un file system, come in Amazon API Gateway o Google AppEngine. In questi casi è possibile distribuire le librerie installate nel virtualenv locale e applicare patch a sys.path .

Fortunatamente virtualenv viene fornito con uno script che aggiorna sia il tuo sys.path che il tuo sys.prefix

import os

mydir = os.path.dirname(os.path.realpath(__file__))
activate_this = mydir + '/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

Dovresti aggiungere queste righe all'inizio del file che il tuo server eseguirà.

Questo troverà il bin/activate_this.py che virtualenv creato il file nella stessa dir che stai eseguendo e aggiungi i tuoi lib/python2.7/site-packages a sys.path

Se stai cercando di utilizzare lo script activate_this.py , ricorda di implementare con, almeno, le directory bin e lib/python2.7/site-packages e il loro contenuto.

Python 3.x 3.3

Ambienti virtuali integrati

Da Python 3.3 in poi, il modulo venv creerà ambienti virtuali. Il comando pyvenv non necessita di installazione separata:

$ pyvenv foo
$ source foo/bin/activate

o

$ python3 -m venv foo
$ source foo/bin/activate