Comenzando a migrar algunos scripts de bash a python estoy comenzando con python, hasta hace poco solo había hecho algunos despliegues de aplicaciones web con python y django, y utilizando entornos virtuales de python con virtualenv, pero no me había propuesto a investigar cómo funcionaban, ni tampoco los había utilizado para desarrollo.
En posts anteriores vimos el por qué usar entornos de desarrollo virtuales con Vagrant nos da una ventaja, aunado a esto, si comenzamos a desarrollar diferentes aplicaciones podemos aislar aún más nuestros desarrollos evitando posibles conflictos entre bibliotecas y módulos que usemos para nuestros desarrollos, aquí entra Virtualenv:
Virtualenv es una herramienta que crea ambientes aislados de python. Virtualenv crea un directorio el cual contiene los ejecutables necesarios y las bibliotecas y módulos de python que el ambiente necesitará.
Su instalación y uso lo veremos en dos escenarios: Linux y OSX
Linux (Debian y derivados)
En Debian tenemos a python 2.7 por default instalado, si queremos trastear con python 3 también, hay que instalarlo:
sudo apt-get install python-setuptools python-dev python3-dev
después de esto instalaremos pip (un sistema de gestión de paquetes utilizado para instalar y administrar paquetes de software escritos en Python.)
sudo easy_install pip
Una vez instalado pip instalamos virtualenv, y por qué instalarlo con pip? bien dependiendo de nuestra plataforma podemos encontrar este paquete en los repositorios de nuestra plataforma y muchas veces no están actualizados a su ultima versión, así que lo instalamos con pip y éste instalará la versión mas actual.
sudo pip install virtualenv
e instalamos virtualenvwrapper, un añadido a virtualenv que nos facilita el manejo, creación y activación de los entornos virtuales, en otro post veremos las diferencias y diferentes escenarios donde podemos utilizar uno u otro.
sudo pip install virtualenvwrapper
Si vemos bien los últimos dos comandos con pip, lo hacemos con sudo, con esto instalará los módulos de manera global para todo el sistema, si lo hiciéramos sin sudo se instalarán para el usuario que lo está ejecutando.
Ya instalado hay que agregar lo siguiente a nuestro archivo .bashrc (este archivo lo podemos encontrar en nuestro directorio home, ej.:
nano ~/.bashrc
Y agregamos las siguientes lineas al final de este archivo:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
Guardamos los cambios y recargamos nuestro archivo .bashrc:
source ~/.bashrc
una vez instalado y configurado podemos crear nuestro primer entorno virtual:
mkvirtualenv nombredelentorno
en Debian y derivados el ejecutable de python por default es la versión 2, si queremos crear un entorno que haga uso de python 3 tenemos que especificarlo al momento de crear nuestro entorno:
mkvirtualenv nombredelentorno -p /usr/bin/python3
con esto tendremos creado nuestro entorno, y activado automáticamente y veremos en nuestra terminal al inicio entre paréntesis el nombre de nuestro entorno recién creado, con esto podemos ver que estamos dentro de un entorno:
*En este ejemplo vemos cómo el entorno virtual está activo y se muestra en nuestro prompt al inicio con el nombre de "testvirt"*para desactivarlo ejecutamos:
deactivate
y para volver a activarlo:
workon nombredelentorno
Archlinux y derivados
Para Archlinux tenemos que la versión default de python es la versión 3, y los paquetes de virtualenv varían un poco, teniendo una versión para python 2 y otra para python 3, y por default virtualenv crea los entornos con la versión 3, y hay que definir la versión 2 si queremos utilizarla.
Para instalar los paquetes necesarios ejecutamos:
pacman -S python-virtualenv python2-virtualenv
agregamos de igual forma a nuestro .bashrc o .zshrc las siguientes líneas:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
El uso y activación es igual que en otros sistemas.
Podemos consultar la excelente wiki de Arch para referencias: Wiki Archlinux - Python/Virtual environment
OSX
Al igual que la mayoría de los sistema Linux, OSX viene con una versión de python preinstalada, y en este caso lo mejor es instalar una versión de python alterna, ya que en alguna actualización del sistema puede ocasionar problemas.
Instalación de python con Brew
Si no tenemos instalado brew lo instalamos con la siguiente linea en terminal:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Una vez con brew instalado ejecutamos lo siguiente:
brew install python
Y si queremos usar python 3, también lo instalamos:
brew install python3
Con esto brew instalará y pondrá los ejecutables de python en el siguiente path:
/usr/local/bin
Brew instala y configura pip por nosotros, pero en comparación a la instalación que hicimos en Linux, no la haremos con sudo, lo haremos con nuestro usuario:
pip install virtualenv virtualenvwrapper
Despues de instalarlo, agregamos a nuestro archivo .bashrc o .zshrc si usamos ZShell
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh