Entornos virtuales en Python 3

Desarrollar en un entorno aislado que no interfiera con el resto de desarrollos ni con el host principal es una práctica muy recomendable, incluso me arriesgaría a decir que obligatoria, para todo desarrollador de software. No solo nos permite trabajar en entornos aislados en donde tengamos diferentes módulos instalados, también nos permite utilizar diferentes versiones de un mismo módulo sin que con ellos se produzca fallo alguno.

Para este fin Python dispone de varios sistemas para virtualizar las áreas de trabajo, y en esta entrada del blog veremos como instalar y crear este entorno con virtualenv.


Instalación Python pip y virtualenv

Lo primero que haremos es instalar pip y a continuación el módulo de entornos virtuales para Python 3.

Centos 7

# Instalamos el repositorio EPEL
sudo yum install epel-release
# Instalamos Python 34 y el gestor de paquetes python-pip
sudo yum install python34 python-pip
# Actualizamos pip e instalamos los entornos virtuales
pip install -U pip
pip install -U virtualenv

Debian

# Actualizamos los repositorios
sudo apt-get update
# Instalamos pip para Python 3
sudo apt-get install build-essential libssl-dev libffi-dev python-dev
sudo apt-get install python3-pip
# Ahora los entornos virtuales
sudo pip3 install virtualenv

Crear un entorno virtual

Nos ubicamos en el directorio en donde se ejecutará nuestra herramienta. Yo suelo trabajar en el directorio /usr/local/scripts, pero la decisión final la dejo a tu gusto teniendo en cuenta que hay que indicar este en el comando de sistema que crearemos más adelante.

mkdir -p /usr/local/scripts/prueba && cd /usr/local/scripts/prueba

Creamos el entorno virtual sobre el que se ejecutará nuestra herramienta, el cual lamaremos venv_project, pero lo puedes llamar como quieras.

python3 -m virtualenv venv_project

 


Activar el entorno virtual creado

Activamos el entorno virtual.

source venv_project/bin/activate

El prompt cambia indicando que nos encontramos en el entorno virtual, y por tanto todo módulo de Python que instalemos solo se aplicará a este entorno creado.

(venv_project) sergio@sergio-VirtualBox:/usr/local/scripts/prueba$

Ya podremos instalar cualquier módulo de Python que solo afectará al entorno virtual en que nos encontramos, una vez esté activado. Si este se encuentra desactivado los módulos que se podrán utilizar son los que tenemos instalados en el host en el que nos encontremos.


Desactivar el entorno virtual

Para desactivar el entorno virtual basta con salir de la sesión del host en el que nos encontremos, o escribir la siguiente orden en el entorno virtual:

(venv_project) sergio@sergio-VirtualBox:/usr/local/scripts/prueba$ deactivate