Python, pip y entornos virtuales en un VPS con Ubuntu 24.04

2 min
Hosting VPS/VDS

Ubuntu 24.04 incluye Python 3.12, pero instalar paquetes con un simple pip ahora falla con el error «externally-managed-environment». La solución es aislar cada proyecto en un entorno virtual. Esta guía muestra cómo preparar tu VPS Linux Infrawire, gestionar las dependencias correctamente y mantener una aplicación en marcha como servicio systemd.

📋 Requisitos previos

  • Un VPS con Ubuntu 24.04 o Debian 12 y acceso SSH como root (la IP y la contraseña root están en tu área de cliente)
  • Un proyecto Python o un script sencillo para probar
  • Nociones básicas de línea de comandos

1. Instalar Python 3, pip y venv

Python 3 suele venir preinstalado, pero pip y el módulo venv son paquetes aparte.

Bash
apt update apt install -y python3 python3-pip python3-venv python3-dev build-essential python3 --version pip3 --version

2. Entender el error PEP 668

Ejecutar pip install requests como root en Ubuntu 24.04 o Debian 12 muestra:

TEXT
error: externally-managed-environment

Esta protección (PEP 668) impide que pip sobrescriba archivos gestionados por apt y rompa herramientas del sistema. No la esquives con --break-system-packages. Usa una de las tres opciones limpias que siguen.

3. Crear un entorno virtual

Un entorno virtual es una copia privada de Python y pip para un solo proyecto.

Bash
mkdir -p /opt/myapp && cd /opt/myapp python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install requests flask gunicorn

El prompt ahora empieza por (venv). Sal del entorno con deactivate.

4. Gestionar dependencias con requirements.txt

Congela las versiones exactas para poder reconstruir el proyecto de forma idéntica en otro servidor.

Bash
pip freeze > requirements.txt # En una máquina nueva python3 -m venv venv source venv/bin/activate pip install -r requirements.txt

5. Instalar herramientas de línea de comandos con pipx

Para herramientas independientes (httpie, yt-dlp, black...), pipx da a cada una su propio entorno virtual oculto y expone el comando globalmente.

Bash
apt install -y pipx pipx ensurepath pipx install httpie

Abre después una nueva sesión para cargar el PATH actualizado. Para una librería que tenga paquete Debian, apt install python3-requests también es una opción válida.

6. Ejecutar la aplicación como servicio systemd

Crea un usuario dedicado sin privilegios y después una unidad que arranque el intérprete del entorno virtual (aquí Gunicorn sirviendo un objeto Flask llamado app en app.py).

Bash
useradd --system --home /opt/myapp --shell /usr/sbin/nologin myapp chown -R myapp:myapp /opt/myapp

Crea /etc/systemd/system/myapp.service:

INI
1[Unit] 2Description=My Python application 3After=network.target 4 5[Service] 6User=myapp 7WorkingDirectory=/opt/myapp 8ExecStart=/opt/myapp/venv/bin/gunicorn --bind 127.0.0.1:8000 app:app 9Restart=on-failure 10RestartSec=5 11 12[Install] 13WantedBy=multi-user.target
Bash
systemctl daemon-reload systemctl enable --now myapp

Coloca un proxy inverso como nginx delante del puerto 8000 para exponerla en Internet.

✅ Verificar

Bash
which python # debe apuntar dentro de /opt/myapp/venv cuando está activado pip list systemctl status myapp --no-pager journalctl -u myapp -n 50 --no-pager curl -I http://127.0.0.1:8000

🔧 Solución de problemas

The virtual environment was not created successfully because ensurepip is not available : falta el paquete venv. Instálalo con apt install python3-venv (o python3.12-venv) y repite el comando.

status=203/EXEC en systemd : la ruta de ExecStart es incorrecta o el archivo no es ejecutable por el usuario del servicio. Comprueba con ls -l /opt/myapp/venv/bin/gunicorn y los permisos asignados antes.

ModuleNotFoundError solo bajo systemd : el servicio usa el Python del sistema en lugar del entorno virtual. Llama siempre a /opt/myapp/venv/bin/python o al binario de venv/bin en ExecStart.

pip: command not found : usa python3 -m pip o activa primero el entorno virtual.


🎉 Tus proyectos Python ya están aislados, son reproducibles y se ejecutan como un servicio fiable.

Mantente al día con las últimas ofertas, descuentos y promociones especiales.

Ver promociones

Utilizamos cookies

Utilizamos cookies analíticas para mejorar su experiencia en nuestro sitio. No vendemos datos a terceros. Más información en nuestra política de privacidad.