ошибка pip в Ubuntu: среда, управляемая извне × Эта среда управляется извне

Я обновился до Ubuntu 23.04. Теперь, когда я запускаюpipкоманда (устанавливается с помощьюsudo apt install python3-pip), я получаю эту ошибку:

      $ pip install --user <foobar>
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.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

Что это значит? Как я могу избежать этой ошибки?

Что, если я хочу установить пакет для всего пользователя (--user), а не для всей системы? Как мне это сделать?

4 ответа

На OMGUbuntu есть хорошая статья об этом: 3 способа решить ошибку установки Pip в Ubuntu 23.04.

Вот резюме. Есть три подхода к этой проблеме:

1. Используйте версию репо

Например, если вы хотите установить библиотеку Python, вы можете установить ее с помощью APT, например:

      sudo apt install python3-requests

Это установит эту библиотеку для всей системы.

Не все пакеты, доступные в PyPI, были упакованы и включены в репозитории Debian/Ubuntu, поэтому этот метод не работает для некоторых пакетов.

Или: 2. Создайте виртуальную среду, используя илиvirtualenv

Убеждатьсяvenvустанавливается, запустив:

      sudo apt install python3-venv

Чтобы создать новую виртуальную среду в каталоге с именемenv, бегать:

      python3 -m venv env

Чтобы активировать эту виртуальную среду (которая изменяетPATHпеременная среды), запустите это:

      source env/bin/activate

Теперь вы можете установить библиотеку, напримерrequestsв этой виртуальной среде:

      pip install requests

Файлы будут установлены подenv/каталог.

Если вы хотите покинуть виртуальную среду, вы можете запустить:

      deactivate

Если вы не хотите бежатьsource env/bin/activateиdeactivate, то вы можете запустить исполняемый файл, указав его путь, например:

       $ env/bin/pip install requests
 $ env/bin/python3
 >>> import request
 >>> help(requests)

Или: 3. Используйтеpipx

Pipx позволяет устанавливать и запускать приложения Python в изолированных средах. Это рекомендуемый способ установки пакетов PyPI, представляющих приложения командной строки.

Чтобы установить Pipx, запустите:

       sudo apt install pipx

pipx должен быть в вашем PATH. Вы можете автоматически изменить конфигурацию оболочки (например,~/.bashrc), чтобы соответствующим образом изменить PATH, запустив:

       pipx ensurepath

Теперь вы можете установить пакет из PyPI, например:

       pipx install pycowsay

И вы можете запустить только что установленную команду, например:

      $ pycowsay Mooo!

  -----
< Mooo! >
  -----
   \   ^__^
    \  (oo)\_______
       (__)\       )\/\
           ||----w |
           ||     ||

Как видите, Pipx установил символическую ссылку в~/.local/bin/к исполняемому файлу в виртуальной среде:

      $ ls -l ~/.local/bin/pycowsay
lrwxrwxrwx 1 flimm flimm 50 May 24 11:19 /home/flimm/.local/bin/pycowsay -> /home/flimm/.local/pipx/venvs/pycowsay/bin/pycowsay*

Или: 4. Флаг прохождения:

Если вы хотите проигнорировать предупреждение, вы можете передать--break-system-packagesфлаг:

      pip install --break-system-packages --user <foobar>

Была такая же ошибка на моем Ubuntu 23.04. Я попробовал pip install {package_name} --break-system-packages У меня сработало. Надеюсь, поможет. Спасибо.

Я создал виртуальную среду conda и столкнулся с той же проблемой с pip , поэтомуconda install kafka-pythonработал у меня

Если вы настроили venv и по-прежнему получаете сообщение об ошибке, убедитесь, что у папки venv правильные разрешения. Я потратил много времени, крутя колеса, прежде чем настроил папку на свое имя пользователя. Тогда не используйте sudo.

Проверьте владельца папки:

  1. Перейти в родительскую папку

  2. Укажите владельца папки с помощью:

             ls -Al
    
  3. Если папка принадлежит пользователю root в корне группы:

             chown -R username:username ./venvfolder/
    
Другие вопросы по тегам