Python (Español)/Virtual environment (Español)

From ArchWiki

La traducción de este artículo o sección no refleja el texto original.

Motivos: No updates to the page since its creation in 2015, missing content from the English page and with broken links. (Discusión en Talk:Python (Español)/Virtual environment (Español)#)

virtualenv es una herramienta de desarrollo en Python escrita por Ian Bicking y usada para crear entornos aislados para Python, en los que es posible instalar paquetes sin interferir con otros virtualenvs ni con los paquetes de Python del sistema.

Este artículo explica la instalación del paquete virtualenv y de virtualenvwrapper, un complemento para virtualenv diseñado por Dough Hellmann que facilita enormemente el uso de virtualenv. Además, se explica a continuación el uso más básico de ambas herramientas.

Entornos virtuales

virtualenv es una herramienta diseñada para poder desarrollar proyectos en Python trabajando con diferentes versiones de paquetes que, de otra forma, entrarían en conflicto. Por ejemplo, si un programador quiere desarrollar dos proyectos con diferentes versiones de Django, no es posible tener las dos versiones instaladas en el directorio de bibliotecas de Python del sistema, a no ser que se utilice una herramienta como virtualenv. Con virtualenv, este programador crearía dos entornos aislados, e instalaría cada versión de Django en uno de los entornos.

virtualenvwrapper, por su parte, proporciona varios comandos para hacer más cómodo el uso de virtualenv desde la consola.

Aparte de estas dos herramientas, a partir de la versión 3.3 de Python, la biblioteca estándar incluye venv como un módulo integrado. venv implementa una API similar a la de virtualenv.

Virtualenv

virtualenv es compatible con Python 2.6+ y Python 3.x. Ver Python (Español)#Python 3[enlace roto: sección no válida] para conocer las diferencias entre las diferentes versiones de Python.

Installation

Instala python-virtualenv, o python2-virtualenv[enlace roto: package not found] para la versión compatible con Python 2.

Uso básico

Nota: Un extenso tutorial sobre el uso de virtualenv se puede encontrar en este artículo en inglés (enlace alternativo.

Un caso de uso sencillo, sin usar virtualenvwrapper, podría ser el siguiente:

  • Crear un virtualenv:
$ virtualenv mi_env
  • Activar el virtualenv:
$ source mi_env/bin/activate
  • Instalar un paquete (p.ej. Django) en el virtualenv:
(mi_env)$ pip install django
  • Trabajar en el proyecto.
  • Salir del virtualenv:
(mi_env)$ deactivate

Virtualenvwrapper

virtualenvwrapper permite una interacción más cómoda con los virtualenvs, proporcionando varias órdenes útiles para crear, activar y eliminar virtualenvs. Este paquete es compatible tanto con python-virtualenv como con python2-virtualenv[enlace roto: package not found].

Instalación

Instalar el paquete python-virtualenvwrapper desde los repositorios oficiales.

Una vez instalado, es necesario crear un directorio para albergar los virtualenvs:

mkdir $HOME/.virtualenvs

Después hay que añadir las siguientes líneas a ~/.bashrc:

export WORKON_HOME=~/.virtualenvs
source /usr/bin/virtualenvwrapper.sh

Para que estas líneas se activen, es necesario reiniciar la sesión, o ejecutar

source ~/.bashrc
Nota: Por defecto, las versiones actuales de Arch Linux utilizan Python 3 como intérprete de Python. Si no fuera así, sería necesario añadir la siguiente línea a ~/.bashrc antes de source /usr/bin/virtualenvwrapper.sh:
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
Esto se debe a que virtualenvwrapper necesita ser ejecutado por Python 3, aunque puede crear virtualenvs para Python 2.7 sin problemas.

Uso básico

Nota: Se puede encontrar una información más extensa sobre el uso de virtualenvwrapper en la página de Doug Hellmann.
  • Ver la lista de virtualenvs instalados:
$ workon
  • Crear un nuevo virtualenv:
$ mkvirtualenv -p /usr/bin/python2.7 mi_env
  • Activar el virtualenv:
$ workon mi_env
  • Instalar un paquete (p.ej. Django) en el virtualenv:
$ (mi_env)$ pip install django
  • Trabajar en el proyecto
  • Salir del virtualenv:
(mi_env)$ deactivate

Ver también