Вопрос или проблема
Когда я пытаюсь установить любой пакет с помощью pip, возникает ошибка:
ошибка: управляемая извне среда
× Эта среда управляется извне
╰─> Чтобы установить пакеты Python для всей системы, попробуйте apt install
python3-xyz, где xyz — это пакет, который вы пытаетесь
установить.
Если вы хотите установить пакет Python, не упакованный в Debian,
создайте виртуальное окружение, используя python3 -m venv путь/к/venv.
Затем используйте путь/к/venv/bin/python и путь/к/venv/bin/pip. Убедитесь,
что у вас установлен python3-full.
Если вы хотите установить приложение Python, не упакованное в Debian,
возможно, будет проще использовать pipx install xyz, который будет управлять
виртуальным окружением для вас. Убедитесь, что у вас установлен pipx.
См. /usr/share/doc/python3.12/README.venv для получения дополнительной информации.
примечание: Если вы считаете, что это ошибка, пожалуйста, свяжитесь с вашим поставщиком установки Python или дистрибутива ОС. Вы можете переопределить это, рискуя нарушить установку Python или ОС, передав --break-system-packages.
подсказка: См. PEP 668 для подробной спецификации.
В моем случае это пакет markdown-pdf
.
Что мне делать?
ОС – Ubuntu 24.10 (не LTS)
Если вы уверены в своем пакете, вы можете использовать “–break-system-packages”
например.
pip install markdown-pdf –break-system-packages
Ответ или решение
Когда вы пытаетесь установить пакет с помощью pip и сталкиваетесь с ошибкой «externally-managed-environment», это может быть довольно разочаровывающим, особенно если вы не знакомы с нюансами управления пакетами в Ubuntu. Важно понимать, что данная ошибка указывает на использование системы управления пакетами, что предполагает наличие ограничений на установку пакетов в систему.
Причины проблемы
Ошибка «externally-managed-environment» возникает, когда вы пытаетесь установить Python-пакет в окружении, которое управляется системой. Это может произойти по следующим причинам:
-
Управление пакетами через apt: В Ubuntu (и других дистрибутивах Debian) большая часть программного обеспечения устанавливается и управляется через
apt
. Когда вы используете pip для установки пакетов, которые уже входят в систему управления пакетами, это может вызвать конфликты. -
Системные ограничения: Некоторые дистрибутивы и конфигурации Python могут быть настроены так, чтобы предотвратить установку пакетов, которые могут повлиять на системные библиотеки Python.
-
Использование pip в не виртуальных окружениях: Если вы пытаетесь установить пакеты глобально, не находясь в виртуальном окружении, вы можете столкнуться с этой ошибкой.
Рекомендации по решению
Чтобы преодолеть данную проблему, вы можете рассмотреть несколько подходов:
-
Использование APT для установки пакетов:
Если пакет, который вы пытаетесь установить, доступен в репозиториях Ubuntu, вы можете установить его с помощью APT. Например:sudo apt install python3-markdown-pdf
-
Создание виртуального окружения:
Если пакет недоступен для установки через APT или если вы хотите установить более новую версию, рекомендуем создать виртуальное окружение:python3 -m venv myenv source myenv/bin/activate pip install markdown-pdf
Это позволит вам установить пакеты, не нарушая системную конфигурацию.
-
Использование pipx:
Если вы хотите установить приложение Python, которое должно быть доступно глобально, попробуйте использоватьpipx
. Это инструмент, который значительно упрощает установку и работу с отдельными Python-приложениями в виртуальных окружениях:pipx install markdown-pdf
Альтернативное решение
Если вы уверены в необходимости установки пакета с использованием pip и готовы игнорировать предупреждения, вы можете воспользоваться следующим флагом:
pip install markdown-pdf --break-system-packages
Однако стоит учесть, что это может привести к некорректной работе системы или конфликтам с другими пакетами.
Заключение
Проблема с «externally-managed-environment» в Ubuntu — это защитная мера, направленная на сохранение целостности системного окружения Python. В большинстве случаев рекомендуется использовать APT или создавать виртуальные окружения для установки Python-пакетов. Если же вы принимаете решение игнорировать эти ограничения, действуйте осторожно, чтобы избежать негативных последствий для вашей системы.