¿Cómo configurar y usar un entorno virtual de Python en Ubuntu?

73

Los entornos virtuales de Python se utilizan para crear entornos de python aislados para evitar conflictos de dependencia y versión, y también indirectamente resolver problemas de permisos. Pero, ¿cuál es la forma más fácil de configurarlo y usarlo en Ubuntu?

Gerhard Burger
fuente

Respuestas:

99

Con virtualenvwrapper(envoltorios fáciles de usar para la funcionalidad devirtualenv )

Instalar virtualenv

Instalar virtualenvcon

sudo apt-get install virtualenv

(para Ubuntu 14.04 (confiable) instalar python-virtualenv )

Instalar virtualenvwrapper

La razón por la que también estamos instalando virtualenvwrapper es porque ofrece comandos agradables y simples para administrar sus entornos virtuales. Hay dos formas de instalarvirtualenvwrapper :

Como paquete de Ubuntu (de Ubuntu 16.04)

correr

sudo apt install virtualenvwrapper

entonces corre

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

Usando pip

  1. Instalar y / o actualizar pip

    Instalar pip para Python 2 con

    sudo apt-get install python-pip

    o para Python 3

    sudo apt-get install python3-pip

    (si usa Python 3, es posible que deba usarlo en pip3lugar del pipresto de esta guía).

    Opcional (pero recomendado): active bash autocomplete para pip

    correr

    pip completion --bash >> ~/.bashrc

    y ejecutar source ~/.bashrcpara habilitar.

  2. Instalar virtualenvwrapper

    Debido a que queremos evitarsudo pip , instalamos virtualenvwrapperlocalmente (de forma predeterminada en ~/.local) con:

    pip install --user virtualenvwrapper

    y

    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
  3. Fuente virtualenvwrapper en .bashrc

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

Configurar virtualenv y virtualenvwrapper:

Primero exportamos la WORKON_HOMEvariable que contiene el directorio en el que se almacenarán nuestros entornos virtuales. Hagamos esto~/.virtualenvs

export WORKON_HOME=~/.virtualenvs

ahora también crea este directorio

mkdir $WORKON_HOME

y poner esta exportación en nuestro ~/.bashrcarchivo para que esta variable se defina automáticamente

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

También podemos agregar algunos trucos adicionales como los siguientes, que aseguran que si pipcrea un entorno virtual adicional, también se coloca en nuestro WORKON_HOMEdirectorio:

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

Fuente ~ / .bashrc para cargar los cambios

source ~/.bashrc

Prueba si funciona

Ahora creamos nuestro primer entorno virtual. El -pargumento es opcional, se usa para configurar la versión de Python a usar; También puede ser python3por ejemplo.

mkvirtualenv -p python2.7 test

Verá que se configurará el entorno y su mensaje ahora incluye el nombre de su entorno activo entre paréntesis. También si ahora corres

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

deberías ver mucho /home/user/.virtualenv/...porque ahora no usa los paquetes de sitio de tu sistema.

Puede desactivar su entorno ejecutando

deactivate

y si quieres trabajar de nuevo, simplemente escribe

workon test

Finalmente, si desea eliminar su entorno, escriba

rmvirtualenv test

¡Disfrutar!


Gracias al autor de este blog .

Gerhard Burger
fuente
2
python-pipy se python-virtualenvpueden instalar a través del repositorio de Ubuntu, no es necesario realizar una instalación manual.
Timo
2
Sin embargo, en Ubuntu, recomendamos los paquetes de Ubuntu, por muchas razones. No hay nada malo con las versiones anteriores de pip o virtualenv, son perfectamente capaces.
planta rodadora
1
@GerhardBurger: Si crea un python3 virtualenv, obtendrá un pip que funciona en python3. Si usa virtualenv de Ubuntu para crear virtualenv, todo lo que haya hecho estará contenido en virtualenv. Si comienza a sudo easy_installing cosas, dejará un desorden en todo / usr / local, que no es trivial de limpiar, sin mucha ganancia.
planta rodadora
parece que el alias no es necesario ahora: --no-site-packageses predeterminado y está en --distributedesuso
int_ua
En caso de mkvirtualenv testque no funcione, vea también: stackoverflow.com/questions/15608236/…
Nikos Alexandris
8

Los entornos virtuales ofrecen una forma de gestionar y aislar dependencias por proyecto. Además, también evitan toda la sudo pip installsituación, lo cual es un riesgo de seguridad, como lo he explicado en https://askubuntu.com/a/802594/15003 . La documentación oficial de Python también fomenta el uso de entornos virtuales .

La forma más fácil de crear y usar entornos virtuales para Python 2 y Python 3 es instalar virtualenvusando apto apt-get. Para cada proyecto de Python, cree un virtualenv y luego actívelo. Tenga en cuenta que virtualenv es específico para una versión particular de Python. Después de la activación, use pippara instalar los paquetes de Python como de costumbre, independientemente de si está usando Python 2 o 3; no es necesario usar pip3Python 3. sudosolo se usa para instalar virtualenvy no se usa pip, por lo tanto, se evita el riesgo de seguridad antes mencionado. Los comandos para hacerlo son:

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

Si desea crear un virtualenv para Python 3, reemplácelo virtualenv venvcon:

virtualenv venv -p python3

Lea más sobre varias campanas y silbatos virtualenven https://virtualenv.pypa.io/en/stable/ .

edwinksl
fuente
1
sourceme ahorra muchos comandos
vnpnlz
OSError: [Errno 40] Demasiados niveles de enlaces simbólicos: '/ var / www / html / python / check / venv / bin / python'
Saravanan Nandhan
@SaravananNandhan Haga una nueva pregunta con los detalles necesarios.
edwinksl
3

Con el módulo venv disponible desde Python 3.3 (y Ubuntu 15.10)

Los entornos virtuales (venvs) son tan populares que la funcionalidad ahora se incluye en Python (desde 3.3 en adelante). Para usarlo en Ubuntu necesitas instalar python3-venv(ya que el ensurepipmódulo no está disponible):

sudo apt-get install python3-venv

Después de eso puedes usar

pyvenv myvirtualenv

para crear un entorno virtual llamado myvirtualenv. Entonces puedes usar

source myvirtualenv/bin/activate

para activar el entorno virtual. Para desactivar simplemente escriba

deactivate

EDITAR: El pyvenvscript ha quedado en desuso a favor de python3 -m venv. Esto evita la confusión en cuanto a qué intérprete de Python pyvenvestá conectado y, por lo tanto, qué intérprete de Python será utilizado por el entorno virtual. ( fuente )

Gerhard Burger
fuente