Python

Mis notas de Python: errores, soluciones y cosas que quiero tener a mano para no pelearme con pip cada dos semanas.

Solucionar el error "externally-managed-environment" al usar pip


Cuando intentas actualizar pip o instalar paquetes en sistemas gestionados por tu distribución (como Ubuntu o Debian), puedes encontrarte con este error:

➜ pip install --upgrade pip
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    ...

No es grave, y tiene solución. Este mensaje aparece desde Python 3.11 con la implementación del PEP 668, que busca proteger el entorno Python del sistema. Aquí explico cómo saltarse esta restricción de forma controlada.


Soluciones disponibles


1. Renombrar el archivo EXTERNALLY-MANAGED

Es la opción más directa y reversible. No modifica el sistema en profundidad:

sudo mv /usr/lib/python3.11/EXTERNALLY-MANAGED /usr/lib/python3.11/EXTERNALLY-MANAGED.old

Después ya puedes usar pip sin restricciones:

pip install --upgrade pip

Si algo da problemas, se revierte fácilmente:

sudo mv /usr/lib/python3.11/EXTERNALLY-MANAGED.old /usr/lib/python3.11/EXTERNALLY-MANAGED

⚠️ La ruta puede variar: ajusta la versión según tu Python (ej. 3.12 en vez de 3.11).


2. Usar un entorno virtual (recomendado por Python)

Más limpio y seguro, aunque requiere cambiar el flujo de trabajo:

python3 -m venv ~/mi-entorno
source ~/mi-entorno/bin/activate

Ahora puedes instalar paquetes sin afectar al sistema.


3. Usar pipx para instalar aplicaciones

Aísla aplicaciones Python en entornos virtuales gestionados automáticamente:

sudo apt install pipx
pipx install nombre-del-paquete

Ideal si solo necesitas instalar herramientas CLI como httpie, poetry, etc.


¿Cuál prefiero?

Depende del caso:


Notas finales