ошибка 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.
Проверьте владельца папки:
Перейти в родительскую папку
Укажите владельца папки с помощью:
ls -Al
Если папка принадлежит пользователю root в корне группы:
chown -R username:username ./venvfolder/