Ошибка externally-managed-environment при pip install
С Debian 12 системный Python помечен как «управляемый извне»: ставить в него пакеты командой pip нельзя, ведь от этого Python зависят программы самой системы. Поэтому pip install отвечает:
error: externally-managed-environment
× This environment is externally managedКак ставить пакеты правильно
Есть три правильных способа — выберите свой по задаче.
Библиотека нужна системе или скриптуapt
Многие библиотеки Python есть в Debian готовыми пакетами с именем python3-…:
apt search python3-requests
sudo apt install python3-requestsТакие пакеты обновляются вместе с системой и не ломают её. Минус — версия может быть не самой свежей.
Свой проектвиртуальное окружение venv
Виртуальное окружение — отдельная папка со своей копией Python и своими пакетами. В неё pip ставит что угодно, не трогая систему. В Debian модуль venv вынесен в отдельный пакет:
sudo apt install python3-venv
python3 -m venv ~/venvs/myproject
~/venvs/myproject/bin/pip install requestsЗапускать программу — Python из этой папки: ~/venvs/myproject/bin/python script.py. Или «войдите» в окружение, и тогда python и pip в этом окне терминала будут его собственными:
source ~/venvs/myproject/bin/activate
pip install requests
deactivatedeactivate выходит из окружения. Без пакета python3-venv создание окружения завершается ошибкой со словами ensurepip is not available.
Программа с командойpipx
Если из PyPI (каталога пакетов Python) нужна не библиотека, а готовая программа (утилита командной строки), удобнее pipx: он сам создаёт для каждой программы своё окружение и делает её команду доступной.
sudo apt install pipx
pipx ensurepath
pipx install имя-программыpipx ensurepath добавляет папку ~/.local/bin в PATH (список папок, где система ищет команды); после неё откройте новое окно терминала. Вместо имя-программы — название программы на PyPI.
Чего не делать
Ключ --break-system-packages снимает защиту, и pip ставит пакеты прямо в системный Python. Так можно заменить библиотеку, нужную самому Debian, и сломать системные программы, написанные на Python. Не пользуйтесь им и тем более не запускайте sudo pip install.
То же касается удаления файла EXTERNALLY-MANAGED из папки Python: защита пропадёт, а риск останется.
Подробнее о Python, пакетах и окружениях — в курсе Python.