Un entorno virtual en Python es un espacio aislado y autónomo que te permite tener una instalación de Python y sus paquetes de forma independiente del sistema global de Python. Es una herramienta que te permite crear un entorno de trabajo específico para cada proyecto, con sus propias dependencias y versiones de paquetes, sin interferir con otras instalaciones de Python que puedas tener en tu sistema.
Cuando creas un entorno virtual, se crea un directorio separado que contiene su propia instalación de Python, junto con una copia de la herramienta pip
(el gestor de paquetes de Python) y otros archivos necesarios. Puedes instalar paquetes específicos dentro del entorno virtual sin afectar a los paquetes instalados en otros entornos o en el sistema global de Python.
Las ventajas de utilizar entornos virtuales en Python son:
- Aislamiento: Los entornos virtuales permiten tener proyectos separados y aislados unos de otros. Cada proyecto puede tener sus propias versiones de paquetes y dependencias sin conflictos.
- Portabilidad: Puedes compartir fácilmente un entorno virtual con otros desarrolladores. El archivo
requirements.txt
, que contiene la lista de paquetes y versiones utilizados en el entorno, puede ser compartido para que otros puedan reproducir el entorno exacto en sus sistemas. - Mantenimiento limpio: Al utilizar entornos virtuales, puedes evitar la instalación de paquetes a nivel global del sistema, lo que facilita la limpieza y el mantenimiento de tu sistema.
- Flexibilidad: Puedes utilizar diferentes versiones de Python en diferentes entornos virtuales, lo que te permite probar y migrar tu código entre diferentes versiones sin problemas.
Para crear un entorno virtual en Python, se puede hacer de dos maneras en función de la versión con la que estemos trabajando, a partir de la 3.3 de Python se puede utilizar ‘venv‘ y para versiones anteriores podemos encontrar ‘virtualenv’.
VENV
Tal como hemos comentado, venv
es un módulo integrado en Python 3.3 y versiones posteriores, que permite crear y gestionar entornos virtuales de manera sencilla. A diferencia de virtualenv
, no es necesario instalar nada adicional, ya que venv
viene incluido con la instalación estándar de Python.
Para crear un entorno virtual con venv, desde la terminal navegamos hasta la ubicación donde queremos crear el entorno virtual ejecutamos el siguiente comando:
python -m venv nombre_entorno
A continuación es necesario activar el entorno que hemos creado, para ello, desde el mismo directorio ejecutamos:
source nombre_entorno/bin/activate
Una vez ejecutamos, se puede comprobar que el símbolo de sistema ha cambiado indicando que nos encontramos dentro del entorno virtual. Finalmente cuando hemos acabado de utilizarlo, podemos desactivarlo mediante el siguiente comando:
deactivate
VIRTUALENV
Tanto virtualenv
como venv
son herramientas populares para crear y gestionar entornos virtuales en Python. Aunque ambas cumplen el mismo propósito básico, existen algunas diferencias y ventajas entre estas dos herramientas.
La más destacable, radica en que virtualenv
es compatible con versiones anteriores de Python, lo que significa que puedes usarlo con Python 2.x y Python 3.x. Por otro lado, venv
está disponible únicamente en Python 3.3 y versiones posteriores.
Además, virtualenv
ofrece algunas características adicionales que pueden resultar útiles en determinados escenarios. Por ejemplo, permite la clonación de un entorno virtual existente mediante el uso de la opción --clone
. Esto puede ser útil si se desea crear un nuevo entorno virtual basado en uno existente, lo que puede ahorrar tiempo y evitar tener que reinstalar todos los paquetes.
Otro punto a favor virtualenv
es que permite especificar el intérprete de Python que se desea utilizar al crear un entorno virtual. Esto es útil si tenemos múltiples versiones de Python instaladas en el sistema y deseamos crear un entorno virtual con una versión de Python específica. Por otro lado, venv
utiliza automáticamente el intérprete de Python con el que se ejecuta, lo que significa que no existe la opción de seleccionar uno diferente.
Finalmente, virtualenv
ha existido durante más tiempo que venv
y tiene una comunidad de usuarios más grande y activa. Esto significa que hay más documentación, recursos y soporte disponible en línea.
Sabiendo esto, si nos decidimos por utilizar virtualenv, el funcionamiento es similar al anterior, pero dado que es un módulo no nativo de Python, se debe instalar previamente, lo que hacemos mediante pip:
pip install virtualenv
A continuación, de manera similar a venv
podemos crear un entorno virtual mediante el comando:
virtualenv env
Y para activarlo/desactivarlo:
source env/bin/activate
deactivate
Este artículo, pese a la sencillez del tema, lo he querido redactar para repasar las opciones que tenemos en cuando a desarrollo con Python, es común encontrarme con alumnos y compañeros que olvidan la versatilidad y múltiples opciones que ofrece trabajar con estas herramientas.