Come configurare e utilizzare un ambiente virtuale Python in Ubuntu?


73

Gli ambienti virtuali Python vengono utilizzati per creare ambienti Python isolati per evitare conflitti di dipendenza e versione e anche occuparsi indirettamente dei problemi di autorizzazione. Ma qual è il modo più semplice per configurarlo e utilizzarlo in Ubuntu?

Risposte:


99

Con virtualenvwrapper(wrapper intuitivi per la funzionalità di virtualenv)

Installa virtualenv

Installa virtualenvcon

sudo apt-get install virtualenv

(per l'installazione di Ubuntu 14.04 (fidato) python-virtualenv)

Installa virtualenvwrapper

Il motivo per cui stiamo installando anche virtualenvwrapper è perché offre comandi semplici e piacevoli per gestire i tuoi ambienti virtuali. Esistono due modi per installare virtualenvwrapper:

Come pacchetto Ubuntu (da Ubuntu 16.04)

Correre

sudo apt install virtualenvwrapper

quindi corri

echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc

Usando pip

  1. Installa e / o aggiorna pip

    Installa pip per Python 2 con

    sudo apt-get install python-pip

    o per Python 3

    sudo apt-get install python3-pip

    (se si utilizza Python 3, potrebbe essere necessario utilizzarlo pip3anziché pipnel resto di questa guida).

    Opzionale (ma consigliato): attiva il completamento automatico bash per pip

    Correre

    pip completion --bash >> ~/.bashrc

    ed esegui source ~/.bashrcper abilitare.

  2. Installa virtualenvwrapper

    Perché vogliamo evitaresudo pip installiamo virtualenvwrapperlocalmente (di default sotto ~/.local) con:

    pip install --user virtualenvwrapper

    e

    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
  3. Virtualenvwrapper di origine in .bashrc

    echo "source ~/.local/bin/virtualenvwrapper.sh" >> ~/.bashrc

Installazione di virtualenv e virtualenvwrapper:

Innanzitutto esportiamo la WORKON_HOMEvariabile che contiene la directory in cui devono essere memorizzati i nostri ambienti virtuali. Facciamo questo~/.virtualenvs

export WORKON_HOME=~/.virtualenvs

ora crea anche questa directory

mkdir $WORKON_HOME

e metti questa esportazione nel nostro ~/.bashrcfile in modo che questa variabile venga definita automaticamente

echo "export WORKON_HOME=$WORKON_HOME" >> ~/.bashrc

Possiamo anche aggiungere alcuni trucchi extra come il seguente, che assicura che se pipcrea un ambiente virtuale extra, sia anche inserito nella nostra WORKON_HOMEdirectory:

echo "export PIP_VIRTUALENV_BASE=$WORKON_HOME" >> ~/.bashrc 

Fonte ~ / .bashrc per caricare le modifiche

source ~/.bashrc

Verifica se funziona

Ora creiamo il nostro primo ambiente virtuale. L' -pargomento è facoltativo, viene utilizzato per impostare la versione di Python da utilizzare; può anche essere python3per esempio.

mkvirtualenv -p python2.7 test

Vedrai che l'ambiente verrà impostato e il tuo prompt ora include il nome del tuo ambiente attivo tra parentesi. Anche se ora corri

python -c "import sys; print sys.path"

dovresti vedere molte cose /home/user/.virtualenv/...perché ora non usa i pacchetti del sito di sistema.

È possibile disattivare l'ambiente eseguendo

deactivate

e se vuoi lavorarci di nuovo, digita semplicemente

workon test

Infine, se si desidera eliminare il proprio ambiente, digitare

rmvirtualenv test

Godere!


Grazie all'autore di questo blogpost .


2
python-pipe python-virtualenvsono installabili tramite il repository Ubuntu, non è necessaria l'installazione manuale.
Timo,

2
Tuttavia, in Ubuntu, raccomandiamo i pacchetti Ubuntu, per molte ragioni. Non c'è niente di sbagliato nelle versioni precedenti di pip o virtualenv, sono perfettamente in grado.
tumbleweed,

1
@GerhardBurger: se crei un virtualenv python3, otterrà un pip che funziona in python3. Se usi virtualenv di Ubuntu per creare virtualenv, tutto ciò che hai fatto sarà contenuto all'interno di virtualenv. Se inizi su sudo easy_installing stuff, lascerà un casino su / usr / local, non è banale ripulirlo, senza molto guadagno.
tumbleweed,

sembra che l'alias non sia necessario ora: --no-site-packagesè predefinito e --distributedeprecato
int_ua

Nel caso in cui mkvirtualenv testnon funzioni, vedi anche: stackoverflow.com/questions/15608236/…
Nikos Alexandris

8

Gli ambienti virtuali offrono un modo per gestire e isolare le dipendenze in base al progetto. Inoltre, evitano anche l'intera sudo pip installsituazione, il che rappresenta un rischio per la sicurezza, come ho spiegato in https://askubuntu.com/a/802594/15003 . La documentazione ufficiale di Python incoraggia anche l'uso di ambienti virtuali .

Il modo più semplice per creare e usare ambienti virtuali sia per Python 2 che per Python 3 è installare virtualenvusando apto apt-get. Per ogni progetto Python, creare un virtualenv e quindi attivarlo. Nota che virtualenv è specifico per una particolare versione di Python. Dopo l'attivazione, utilizzare pipper installare i pacchetti Python come al solito, indipendentemente dal fatto che si stia utilizzando Python 2 o 3; non è necessario utilizzare pip3Python 3. sudoviene utilizzato solo per l'installazione virtualenve non viene utilizzato pip, evitando così il rischio di sicurezza sopra menzionato. I comandi per farlo sono:

sudo apt update
sudo apt install virtualenv
cd ~/desired_directory  # cd to desired_directory
virtualenv venv  # create virtualenv named venv for default system Python, which is Python 2 for Ubuntu
source venv/bin/activate  # activate virtualenv
pip install -U pip  # upgrade pip in case it is outdated
pip install desired_package  # install desired_package

Se desideri creare un virtualenv per Python 3, sostituiscilo virtualenv venvcon:

virtualenv venv -p python3

Maggiori informazioni su varie campane e fischietti virtualenvsu https://virtualenv.pypa.io/en/stable/ .


1
sourcemi salva un sacco di comandi
vnpnlz

OSError: [Errno 40] Troppi livelli di collegamenti simbolici: '/ var / www / html / python / check / venv / bin / python'
Saravanan Nandhan

@SaravananNandhan Ti preghiamo di porre una nuova domanda con i dettagli necessari.
edwinksl,


3

Con il modulo venv disponibile da Python 3.3 (e Ubuntu 15.10)

Gli ambienti virtuali (venvs) sono così popolari che la funzionalità è ora inclusa in Python stesso (dalla 3.3 in poi). Per usarlo su Ubuntu è necessario installare python3-venv(poiché il ensurepipmodulo non è disponibile):

sudo apt-get install python3-venv

Dopodiché puoi usare

pyvenv myvirtualenv

per creare un ambiente virtuale chiamato myvirtualenv. È quindi possibile utilizzare

source myvirtualenv/bin/activate

per attivare l'ambiente virtuale. Per disattivare è sufficiente digitare

deactivate

EDIT: lo pyvenvscript è stato deprecato a favore di python3 -m venv. Ciò impedisce la confusione su ciò a cui pyvenvè connesso l' interprete Python e quindi quale interprete Python verrà utilizzato dall'ambiente virtuale. ( fonte )

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.