que-son-los-entornos-virtuales-python

Qué son los entornos virtuales en Python

Un entorno virtual es un entorno Python aislado que nos permite tener una copia independiente de Python y sus paquetes para cada proyecto.

Esto significa que podemos tener diferentes versiones de Python y paquetes instalados en cada entorno virtual, sin interferir con otros proyectos o el sistema global de Python en nuestra máquina.

El objetivo es evitar conflictos entre librerías instaladas*, o incluso por cambios de versión de Python. Por este motivo es muy habitual también a la hora de colaborar entre varias personas, o en proyectos Open Source.

¿Qué es un entorno virtual?

Un Entorno virtual es simplemente una carpeta con una estructura determinada que Python crea por nosotros.

Entorno Virtual
├── Include
├── Libs
│   └── site-packages
└── Scripts

En resumen, esta carpeta contiene,

  • Un intérprete de Python determinado (o un enlace simbólico a él)
  • Ficheros de configuración
  • Una carpeta con las librerías que añadimos al entorno
  • Scripts (que por ejemplo activan o desactivan el entorno)

Cuando lanzamos Python, y previamente hemos activado en la misma sesión de terminal un entorno, Python sabe que “no tiene que salirse de su entorno”.

Así que, a efectos prácticos, es como si tuviéramos una “pequeña instalación independiente de Python” (es decir, un entorno virtual).

Creación de un Entorno Virtual

Para crear un nuevo entorno virtual, podemos utilizar la herramienta venv que viene incluida con Python 3.

Primero, creamos un nuevo directorio para nuestro proyecto y nos movemos a él:

mkdir mi_proyecto
cd mi_proyecto

Luego, utilizamos venv para crear el entorno virtual. Especificamos el nombre de la carpeta que contendrá el entorno virtual (por ejemplo, venv):

En sistemas Windows:

python -m venv mi_env

En sistemas Unix/Linux o MacOS:

python3 -m venv mi_env

Esto creará una carpeta mi_env en nuestro directorio de proyecto que contendrá el entorno virtual.

Activación del Entorno Virtual

Una vez creado el entorno virtual, necesitamos activarlo para comenzar a usarlo. Para ello tenemos que llamar a un pequeño Script llamado activate que está guardado en la carpeta Scripts del entorno.

En sistemas Windows:

mi_env\Scripts\activate

En sistemas Unix/Linux o MacOS:

source mi_env/bin/activate

Al activar el entorno virtual, verás que el prompt de tu terminal cambia para indicar que estás en el entorno virtual.

(mi_env) C:\ruta_a_mi_proyecto\mi_env >

Desactivación del Entorno Virtual

Cuando hayamos terminado de trabajar en nuestro proyecto y queramos salir del entorno virtual, simplemente ejecutamos:

deactivate

Esto nos devolverá al entorno de Python global de nuestro sistema.

Generalmente, lo que haremos es cerrar la ventana de terminal donde hayamos activado el entorno virtual, y listo.

Instalación de Paquetes en el Entorno Virtual

Una vez activado el entorno virtual, podemos utilizar pip para instalar paquetes específicos dentro de este entorno sin afectar al sistema global de Python.

pip install requests

Esto instalará el paquete requests dentro del entorno virtual venv.

Uso de Entornos Virtuales con Visual Studio Code

Si estás usamdo Visual Studio Code como tu entorno de desarrollo, también puedes seleccionar un entorno virtual para tu proyecto (de hecho, es facilisimo).

Por un lado, podemos crear directamente un entorno virtual. Para ello, en la paleta de comandos (Ctrl + Shift + P) escribimos Python: Create Enviroment, y seguimos las instrucciones que nos dará.

vscode-python-enviroments-1

Si ya tenemos un entorno virtual y queremos activarlo, en la paleta de comandos escribimos Python: Select Interpreter.

Nos aparecerá un desplegable con los distintos intérpretes que VSCode ha detectado, incluido el entorno virtual que tengamos abierto.

vscode-python-enviroments-2

En la barra inferior de VSCode podemos verificar que intérprete tenemos activado.

vscode-python-enviroments-3

Además, si abrimos una consola de terminal (Ctrl + Shift + ñ) veremos

Cuando queramos dejar de usar el entorno virtual, volvemos a usar Python: Select Interpreter y seleccionamos otro entorno, o la instalación global.