Apuntes sobre Python

La indentación no es estilo: es sintaxis.

Entornos virtuales en Python

Qué son, por qué existen, cómo crearlos, activarlos, usarlos y eliminarlos. Todo lo que necesitas recordar en un solo sitio.

Qué es un entorno virtual y por qué existe

Cuando instalas Python en tu sistema hay un único Python global. Si instalas ahí todos los paquetes de todos tus proyectos acabas con conflictos: el proyecto A necesita requests==2.28 y el proyecto B necesita requests==2.31, y no pueden coexistir en el mismo sitio.

Un entorno virtual es una carpeta que contiene su propia copia aislada del intérprete de Python y su propio directorio de paquetes. Cada proyecto tiene los suyos, sin pisarse entre sí ni tocar el Python del sistema.

Nota: el Python global es como el sistema operativo del servidor. Los entornos virtuales son como contenedores - cada aplicación vive en el suyo, con sus propias versiones de todo, sin interferir con las demás.

En Ubuntu (y en general en Linux moderno) instalar paquetes directamente en el Python del sistema está bloqueado por defecto - por eso pip install sin entorno virtual da error. Esto es intencionado: el sistema operativo usa ese Python y no quiere que lo rompas.

Crear un entorno

El módulo venv viene incluido con Python, no hay que instalar nada.

python3 -m venv nombre-del-entorno

El nombre es una carpeta que se crea en el directorio actual. Por convención se suele llamar venv o .venv (con punto para que quede oculta y no se incluya en git):

# dentro de la carpeta del proyecto:
python3 -m venv .venv

Nota: crea el entorno dentro de la carpeta del proyecto y añade .venv/ a tu .gitignore. Los entornos no se comparten ni se suben a git - lo que se comparte es el archivo requirements.txt

Qué hay dentro de la carpeta del entorno

.venv/
├── bin/            # intérprete python, pip, activate…  (en Windows: Scripts/)
├── include/
├── lib/
│   └── python3.12/
│       └── site-packages/   # aquí se instalan los paquetes
└── pyvenv.cfg

Activar y desactivar

Activar un entorno modifica temporalmente tu sesión de terminal para que python y pip apunten al entorno en lugar al sistema.

SistemaComando para activar
Linux / macOS (bash/zsh)source .venv/bin/activate
Windows (PowerShell).venv\Scripts\Activate.ps1
Windows (cmd).venv\Scripts\activate.bat

Una vez activado, el prompt cambia para indicarlo:

usuario@pc:~/proyecto$ source .venv/bin/activate
(.venv) usuario@pc:~/proyecto$

A partir de aquí python y pip son los del entorno:

which python
/home/usuario/proyecto/.venv/bin/python

python --version
Python 3.12.3

Desactivar

deactivate

Vuelves al Python del sistema. El entorno no se borra, sigue ahí para la próxima vez.

Nota: si cierras la terminal el entorno se desactiva automáticamente. Al abrir una nueva terminal tienes que volver a hacer source .venv/bin/activate. El entorno no "persiste" entre sesiones, solo la carpeta persiste.

Usar el entorno sin activarlo

Puedes llamar directamente al Python del entorno sin activarlo. Útil en scripts o cron:


.venv/bin/python mi_script.py
.venv/bin/pip install requests

Instalar y gestionar paquetes

Con el entorno activo, pip instala solo en ese entorno:

pip install requests                  # última versión
pip install requests==2.31.0          # versión exacta
pip install "requests>=2.28,<3"       # rango de versiones
pip install -r requirements.txt       # desde archivo

Ver qué hay instalado

pip list                               # todos los paquetes
pip show requests                      # info de un paquete concreto
pip list --outdated                    # paquetes con versión nueva disponible

Actualizar y desinstalar

pip install --upgrade requests        # actualizar
pip uninstall requests                # desinstalar (pide confirmación)
pip uninstall -y requests             # desinstalar sin confirmación

Listar entornos existentes en el sistema

Python no lleva un registro central de entornos. Para encontrarlos hay que buscarlos:

# busca carpetas llamadas venv o .venv en tu home
find ~ -name "pyvenv.cfg" -maxdepth 5 2>/dev/null

# muestra la ruta de cada entorno encontrado
find ~ -name "pyvenv.cfg" -maxdepth 5 2>/dev/null | xargs dirname

El archivo pyvenv.cfg es el marcador que crea venv dentro de cada entorno. Si está ahí, hay un entorno ahí.

Ver qué versión de Python usa cada entorno


cat /ruta/al/entorno/pyvenv.cfg
home = /usr/bin
version = 3.12.3
...

Exportar e importar dependencias

El requirements.txt es el archivo estándar para compartir qué paquetes necesita un proyecto.

Exportar (congelar el estado actual)

pip freeze > requirements.txt

Genera algo así:

certifi==2026.4.22
charset-normalizer==3.4.7
idna==3.13
requests==2.31.0
urllib3==2.6.3

Importar (reproducir el entorno en otra máquina)

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Nota: Flujo habitual al retomar un proyecto: clonas el repo, creas el entorno, instalas el requirements.txt, y ya tienes exactamente las mismas versiones que cuando lo dejaste.

Borrar un entorno

Un entorno virtual es solo una carpeta. Para borrarlo, borras la carpeta. No hay comando especial: rm -rf .venv

Nota: Antes de borrar: asegúrate de que tienes el requirements.txt actualizado si quieres poder recrearlo. Una vez borrado no hay papelera de reciclaje.

Si el entorno estaba activo en esa terminal, haz deactivate antes de borrar para evitar comportamientos extraños en la sesión actual.

Referencia rápida

Qué quieres hacerComando
Crear entornopython3 -m venv .venv
Activar (Linux/Mac)source .venv/bin/activate
Desactivardeactivate
Instalar paquetepip install requests
Instalar versión exactapip install requests==2.31.0
Ver paquetes instaladospip list
Exportar dependenciaspip freeze > requirements.txt
Instalar desde requirementspip install -r requirements.txt
Actualizar paquetepip install --upgrade requests
Desinstalar paquetepip uninstall requests
Buscar entornos en el sistemafind ~ -name "pyvenv.cfg" -maxdepth 5
Borrar entornorm -rf .venv

Python 3.12 · módulo venv incluido en la stdlib · sin dependencias externas

TOP