Hoy vamos a preparar un entorno de desarrollo aislado para Python con virtualenvwrapper. Esto ayuda a aislar sus dependencias de otros entornos de desarrollo, especialmente cuando se utiliza con pip, de forma que se pueden tener distintos entornos sin problemas de dependencias. virtualenvwrapper ofrece algunos comandos shell para facilitar el uso de dichos entornos.
Instalación
Para instalarlo, lo primero que hay que hacer es abrir una consola y ejecutar el siguiente comando:
$ sudo aptitude install virtualenvwrapper
Además, necesitaremos instalar una serie de librerías:
$ sudo aptitude install python-pip python-pkg-resources npm libxml2-dev libxslt-dev libsasl2-dev python-dev libldap2-dev libssl-dev libjpeg-dev libmysqlclient-dev postgresql-server-dev-all libffi-dev libsasl2-dev postgresql-9.4 libsqlite3-dev
Configuracion
Una vez instalado, la configuración pasa por añadir al fichero ~/.bashrc un par de líneas de código que definirán una variable de entorno y ejecutaran un script al iniciar una terminal. Para ello abriremos un editor de texto cualquiera$ nano ~/.bashrcy añadiremos las siguientes dos líneas al final del fichero:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh # [1]
[1] Cambia la ruta a virtualenvwrapper.sh para que coincida con la de tu instalación.
WORKON_HOME es el directorio donde virtualenvwrapper va a almacenar los entornos virtuales que crees.
Ayuda
Para ver todos los comandos que proporciona virtualenvwrapper puedes ejecutar dicho comando en una consola:$ virtualenvwrapper
virtualenvwrapper is a set of extensions to Ian Bicking's virtualenv
tool. The extensions include wrappers for creating and deleting
virtual environments and otherwise managing your development workflow,
making it easier to work on more than one project at a time without
introducing conflicts in their dependencies.
For more information please refer to the documentation:
http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html
Commands available:
add2virtualenv: add directory to the import path
allvirtualenv: run a command in all virtualenvs
cdproject: change directory to the active project
cdsitepackages: change to the site-packages directory
cdvirtualenv: change to the $VIRTUAL_ENV directory
cpvirtualenv: duplicate the named virtualenv to make a new one
lssitepackages: list contents of the site-packages directory
lsvirtualenv: list virtualenvs
mkproject: create a new project directory and its associated virtualenv
mktmpenv: create a temporary virtualenv
mkvirtualenv: Create a new virtualenv in $WORKON_HOME
rmvirtualenv: Remove a virtualenv
setvirtualenvproject: associate a project directory with a virtualenv
showvirtualenv: show details of a single virtualenv
toggleglobalsitepackages: turn access to global site-packages on/off
virtualenvwrapper: show this help message
wipeenv: remove all packages installed in the current virtualenv
workon: list or change working virtualenvs
Creación
Ahora ya puedes crear un nuevo entorno virtual para un proyecto$ mkproject my_projectEsto, además de crear el nuevo projecto, nos activará el entorno virtual y nos moverá a su directorio de trabajo.
Manejo
Una vez creado el entorno virtual, para activarlo podemos ejecutar:$ workon my_projecty para desactivarlo se utiliza el mismo comando que el utilizado para virtualenv
$ deactivate
Personalización del PYTHONPATH
Si queremos cambiar el PYTHONPATH utilizado en un virtualenv, podemos añadir la siguiente línea a nuestro archivo ~/.virtualenvs/my_project/bin/activate:export PYTHONPATH="/the/path/you/want"Para restablecer el PYTHONPATH original cuando se desactive el entorno virtual, podemos añadir
export OLD_PYTHONPATH="$PYTHONPATH"Antes de la línea mencionada anteriormente y, añadir la siguiente línea al fichero ~/.virtualenvs/my_project/bin/postdeactivate script.
export PYTHONPATH="$OLD_PYTHONPATH"
Caso real de configuración de ~/.virtualenvs/my_project/bin/activate:
export OLD_PYTHONPATH="$PYTHONPATH"
export PYTHONPATH="$PYTHONHOME/trytond:$PYTHONHOME/proteus"
export OLD_DB_NAME="$DB_NAME"
export DB_NAME="try_tests"
export OLD_TRYTOND_CONFIG="$TRYTOND_CONFIG"
export TRYTOND_CONFIG="$PYTHONHOME/trytond/trytond/etc/trytond.conf"
No hay comentarios:
Publicar un comentario