entornos virtuales en python

Las aplicaciones cada vez son más complejas y por suerte más estructuradas, por ello los pequeños bloques de código reutilizable se extraen y se paquetizan, con uno u otro nombre dependiendo de cada lenguaje. El siguiente paso necesario es una herramienta que gestione los paquetes, instalar, listar, eliminar, instalar desde una fuente remota, etc… Bien pues aquí es donde llega la necesidad de usar un entorno virutal. ¿Por qué? Por varios motivos, uno es que cada aplicación puede requerir una serie de paquetes con versiones concretas que no son necesarias con otras aplicaciones o que incluso que sean incopatibles entre sí.
Usando un entorno virtual podemos instalar estas dependencias en una ruta exclusiva para nuestra aplicación y no tenemos que instalarlas en el sistema. Esto es genial ya que no necesitaremos permisos elevados para instalar los paquetes ni tendremos que andar instalando o desinstalando paquetes para poder desarrollar o instalar una aplicación. Además podemos deshacernos fácilmente de estos paquetes eliminando la ruta donde se almacenan y volver a instalarlos para probar el despliegue o simplemente por si sospechamos que hay ‘algo’ que no está correcto en nuestras dependencias.

En el caso de python hay dos entornos virtuales que se usan extensivamente: virtualenvwrapper y virtuaenv.

La primera vez que empecé a leer sobre esto me resultó muy confuso por que parecía que se hablaba de un sólo software para crear el entorno virutal y no de dos. El uso de estos dos nombres muy parecidos favorece la confusión, pero son dos proyectos que al fin y al cabo hacen lo mismo: proveernos de un entorno virtual.

A grandes rasgos las características principales de virtualenvwrapper vs virtualenv en Debian son:
* virtualenvwrapper sólo soporta python2.x ( ojo, en paquete Debian, ver READE.debian) y virutalenv soporta 2.x y 3.x
* virtualenvwrapper centraliza el almacenamiento de dependencias en $WORKON_HOME Y virutalenv no, debes especificar el directorio cada vez que creas el entorno.

Ahora, como comenzar a usar un entorno virtual en python:

Virtualenvwrapper


sudo apt-get install virtualenvwrapper
mkvirtualenv my_project
workon my_project
...
deactivate

Se crea por defecto en `~/.virtualenvs`

 Virtualenv

Puedes preparar el entorno para la version de python que quieras siempre que la tengas instalada en el systema ( -p <ruta_a_bin_python> )

sudo apt-get install python-virtualenv
virtualenv -p /usr/bin/python2 venv
source venv/bin/activate
...
deactivate

instalar dependencias: pip

El gestor de dependencias por defecto en python es pip, y con el puedes instalar, desintalar, instalar desde remoto, etc…
Con estos entornos ya puedes instalar tus ficheros requirements.txt o requirements-dev.txt de pip sin tener que usar poderes de supervaca. La manera ‘standard’ para instalar las dependencias de un proyecto:


pip install pip --upgrade
pip install -r acs/requirements-dev.txt --upgrade
pip install -r acs/requirements.txt --upgrade

Finalmente podrías configurar cada paquete que disponga de setup.py

for package in $(ls -d */); do pushd $package; if [ -e setup.py ]; then python setup.py develop; fi; popd; done


Publicado

en

por

Etiquetas:

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.