pip: error: externally-managed-environment
pip install now refuses with 'externally-managed-environment' on modern Linux. It's a deliberate guardrail, not a bug — it's stopping you from breaking your system Python. Here's the right way around it.
You run pip install requests and modern Debian, Ubuntu, or Fedora stops you:
error: externally-managed-environment
× This environment is externally managed
This landed with newer distros (PEP 668) and it's intentional. Your system Python is owned by the OS package manager (apt, dnf). If pip installs into it, a package upgrade can break system tools that depend on that exact Python. So pip now refuses to touch the system environment by default.
The right fix: a virtual environment
Don't fight the guardrail — do what it's steering you toward. Give your project its own isolated Python:
python3 -m venv .venv # create an isolated environment in .venv/
source .venv/bin/activate # activate it (prompt shows (.venv))
pip install requests # installs here, not into system Python
Inside an active venv, pip works exactly as you expect, and nothing you install can break the OS. When you're done, deactivate.
A virtual environment isn't a workaround for this error — it's how Python projects are supposed to be run. One venv per project keeps their dependencies from colliding, too.
For a command-line tool, use pipx
If you're installing an application you want on your PATH (like black or httpie) rather than a library for one project, use pipx — it puts each tool in its own hidden venv automatically:
sudo apt install pipx # or: python3 -m pip install --user pipx
pipx install black
The override (know the risk)
You can force pip past the check, but this is exactly what the error is protecting you from:
pip install requests --break-system-packages # last resort, can break OS tools
Only reach for this in a throwaway container you're about to discard — never on a machine you care about.
The checklist
- The error is a safety feature, not a bug.
- Library for a project →
python3 -m venv .venv && source .venv/bin/activate, thenpip install. - Standalone CLI tool →
pipx install. --break-system-packagesonly in disposable containers.
Stop reading, start building
This pairs with a hands-on BytExplorer course — do it on your own machine and actually keep the skill.