Saltar a contenido

Entornos Virtuales

Los Entornos Virtuales de Python son una forma de tener un directorio con todos los paquetes de Python que necesitas para un proyecto específico.

Normalmente es solo un directorio con algunos archivos en él. Cuando instalas paquetes de Python de una manera específica, ellos se descargan y configuran en ese directorio.

Tener un entorno virtual para cada proyecto es muy útil porque esto hace que puedas tener exactamente las dependencias que necesitas para ese proyecto, y también puedes tener diferentes versiones de los mismos paquetes en diferentes proyectos.

Ahora veamos cómo crear y usar un entorno virtual.

Asegúrate de tener Python

Antes de crear un entorno virtual, asegúrate de tener una versión oficialmente soportada de Python.

Actualmente es Python 3.7 y superior (Python 3.6 ya está obsoleto).

Puedes revisar la versión de Python que tienes con:

$ python --version
Python 3.7.0

Es posible que tengas múltiples versiones de Python instaladas.

Puede que quieras intentar con las versiones específicas, por ejemplo con:

  • python3.10
  • python3.9
  • python3.8
  • python3.7

Los comandos se verían como esto:

// Probemos con solo python
$ python --version
// Este es demasiado viejo! 😱
Python 3.5.6
// Miremos si hay una versión de python3.10 disponible
$ python3.10 --version
// Oh, no, esta no está disponible 😔
command not found: python3.10
$ python3.9 --version
// Genial! Esto funciona! 🎉
Python 3.9.0
// En este caso, podríamos continuar usando python3.9 en lugar de python

Si tienes diferentes versiones de Python instaladas, asegúrate de usar la versión más reciente que tengas instalada. Por ejemplo, python3.9.

Si no tienes una versión de Python válida instalada, instala Python primero.

Crea un Proyecto

El primer paso es tener un directorio para tu proyecto. Crea uno.

Lo que normalmente hago es que creo un directorio llamado code dentro de mi directorio de usuario (home/user).

Y adentro de ese directorio creo un directorio por cada proyecto.

Por ejemplo:

// Ve a la carpeta home
$ cd
// Crea un directorio para todos los proyectos de código
$ mkdir code
// Entra en ese directorio code
$ cd code
// Crea un directorio para este proyecto
$ mkdir mysuperapp
// Entra en ese directorio
$ cd mysuperapp

Crea un Entorno Virtual de Python

Mientras escribas código en Python, deberías siempre usar entornos virtuales.

Si quieres aprender más sobre ellos, puedes leer el tutorial oficial para entornos virtuales, es muy simple.

Cuando "activas" un entorno virtual, cualquier paquete que instales, por ejemplo con pip, se instalará en ese entorno virtual.

Tip

Hay otras herramientas para manejar entornos virtuales, como Poetry.

Y hay alternativas que son útiles para el despliegue, como Docker y otros tipos de contenedores. En este caso, el "entorno virtual" no es sólo los archivos estándar de Python y las paquetes instalados, sino el sistema completo.

Ve y crea un entorno virtual de Python para este proyecto. Y asegúrate de también actualizar pip.

Aquí están los comandos que puedes usar:

// Recuerda que puedes necesitar usar python3.9 o similar 💡
// Crea el entorno virtual usando el módulo "venv"
$ python -m venv env
// ...aquí se crea el entorno virtual en el directorio "env"
// Activa el entorno virtual
$ source ./env/bin/activate
// Verifica que el entorno virtual está activo
# (env) $$ which python
// El punto importante es que está dentro del directorio del proyecto, en "code/mysuperapp/env/bin/python"
/home/leela/code/mysuperapp/env/bin/python
// Usa el módulo "pip" para instalar y actualizar el paquete "pip" 🤯
# (env) $$ python -m pip install --upgrade pip
---> 100%
Successfully installed pip
// Crea el entorno virtual usando el módulo "venv"
# >$ python -m venv env
// ...aquí se crea el entorno virtual en el directorio "env"
// Activa el entorno virtual
# >$ .\env\Scripts\Activate.ps1
// Verifica que el entorno virtual está activo
# (env) >$ Get-Command python
// El punto importante es que está dentro del directorio del proyecto, en "code\mysuperapp\env\python.exe"
CommandType    Name    Version     Source
-----------    ----    -------     ------
Application    python  0.0.0.0     C:\Users\leela\code\mysuperapp\env\python.exe
// Usa el módulo "pip" para instalar y actualizar el paquete "pip" 🤯
# (env) >$ python -m pip install --upgrade pip
---> 100%
Successfully installed pip

Instala Paquetes

Ahora, después de asegurarnos de estar dentro de un entorno virtual de alguna manera, podemos instalar paquetes de Python, por ejemplo FastAPI:

# (env) $$ python -m pip install fastapi
---> 100%
Successfully installed fastapi starlette pydantic

En este caso, como FastAPI está construido sobre Starlette y Pydantic, cuando instales fastapi, también se instalarán automáticamente.