Как исправить ошибку pip «externally-managed-environment» в Linux

Если вы часто работаете с Python и недавно перешли на Ubuntu 23.04 или Fedora версии 38, скорее всего, вы столкнулись с ошибкой «внешне управляемой среды» при установке пакетов с помощью менеджера пакетов Python pip.

Это может расстраивать и весьма удивлять, поскольку эта ошибка никогда не возникала в старых версиях Ubuntu, Fedora и других дистрибутивах. Давайте узнаем, что именно вызывает эту ошибку и как ее быстро исправить.

Почему возникает ошибка «внешне управляемой среды»

Последние версии всех дистрибутивов Linux принимают стандарты, определенные в PEP-668. Эти изменения гарантируют, что пакеты pip по умолчанию не будут устанавливаться в глобальном контексте.

  Как установить программное обеспечение для создания сценариев в Linux

Это было реализовано в попытке избежать конфликта между менеджером пакетов дистрибутива и инструментами управления пакетами Python. Подробности вы можете узнать в официальная документация PEP-668. Если вы хотите отменить или отменить этот механизм, вы можете использовать три подхода.

1. Удалите файл «ВНЕШНЕ УПРАВЛЯЕМЫЙ».

Это самое простое исправление ошибки «внешнего управления» pip. Все, что вам нужно сделать, это перейти к /usr/lib/python3.xx и удалить ВНЕШНЕ УПРАВЛЯЕМЫЙ файл в каталоге. Вот команды для этого:

 cd /usr/lib/python3.11
sudo rm EXTERNALLY-MANAGED

Это все, что вам нужно сделать, чтобы исправить ошибку. Если вы решите восстановить этот механизм, создайте тот же файл снова с помощью сенсорной команды:

 sudo touch EXTERNALLY-MANAGED 

Теперь вы сможете легко устанавливать пакеты с помощью pip или pip3.

2. Используйте виртуальные среды для установки пакетов pip.

Другой подход, который вы можете использовать, — это использование виртуальных сред для вашего проекта Python. Виртуальные среды — отличный способ изолировать пакеты конкретных программ от операционной системы, а также позволяют аккуратно организовать проект.

  Как организовать телешоу и фильмы в Linux с помощью Tiny Media Manager

Вот как создать виртуальную среду и установить пакеты с помощью pip:

  • Сначала создайте виртуальную среду с помощью:
     python3 -m venv venv 
  • Создайте файл активации внутри каталога bin, используя команду source:
     source venv/bin/activate 
  • В приглашении оболочки должно быть указано имя виртуальной среды. Теперь вы сможете установить любые пакеты Python по вашему желанию.

    Как видите, пакет openai Python сначала не удалось установить, но после создания и переключения на виртуальную среду он устанавливается без проблем.

    3. Используйте pipx для установки пакетов Python

    pipx — это утилита для установки пакетов Python в виртуальных и изолированных средах. Он автоматизирует такие шаги, как создание виртуальных сред для каждого пакета и создание символических ссылок на пакеты в папке .local/bin, чтобы вы могли в любое время вызывать каждый пакет из оболочки.

      Как установить IDE PhpStorm в Linux

    Использование pipx для установки пакетов помогает избежать ошибки «среды с внешним управлением» при установке пакетов в виртуальных средах. Чтобы использовать pipx, сначала установите его с помощью менеджера пакетов по умолчанию вашего дистрибутива.

    В производных Ubuntu/Debian:

     sudo apt-get install pipx 

    В системах на базе Arch:

     sudo pacman -S pipx 

    В Fedora/CentOS/RHEL:

     sudo dnf install pipx 

    После установки pipx используйте его так же, как и pip для установки пакетов. Вот пример команды:

     pipx install openai 

    Чтобы узнать больше о pipx, вы можете обратиться к его man-странице с помощью команды man.

    Теперь вы знаете, как исправить ошибку «управляемого извне»

    После исправления ошибки «внешне управляемая среда» вы сможете продолжить работу над своим проектом или практиковаться в общем программировании на Python. Если вы сосредоточены на последнем, возможно, вы захотите ознакомиться с различными игровыми способами изучения программирования, которые помогут вам выучить Python или любой другой язык гораздо быстрее, практическим и полезным способом.