[ @python @pip3 ]
При использовании команд установки вроде «pip3 install somePackage» может возникнуть ошибка «error: externally-managed-environment».
Есть несколько решений
- или постоянно использовать python venv при установке и использовании ПО в контексте Python. Иногда в этом есть преимущество, иногда нет.
- или выполнять такие команды с грубым дополнением «--break-system-packages». Это очень не рекомендуется, но если хочется, можно это делать постоянно:
После [global> добавить строку
break-system-packages = true
Теперь этот параметр будет автоматически (и незаметно) добавляться к любой команде типа «pip3 install somePackage». Когда-то про это всё забудется и при очередной установке чего-то система сломается, и понять причину будет очень сложно.
- или подавить защитные меры venv через переименование файла с сообщением о проблеме:
По-сути это аналог предыдущего решения, просто система будет считать, что нужного файла нет на диске и не будет выкидывать сообщение об ошибке. Мера временная, после какого-то обновления системы отсутствующий файл может снова появиться.
- вместо
pip3 install somePackage
использовать
sudo apt install python3-somePackage
В каких-то случаях это не сработает. Так, вместо
pip3 install wheel pillow
подразумевается использовать две команды:
sudo apt install python3-wheel
sudo apt install python3-pillow
но пакет python3-pillow отсутствует, вместо него будет попытка установить python3-pil. Решение:
sudo apt install python3-wheel
pip3 install pillow --break-system-packages
Другое решение
python3 -m pip install --upgrade pip setuptools wheel
python3 -m pip install Pillow
Возможно лучшее решение
Таки использовать venv постоянно от имени действующего юзера, но слегка неформальным способом.
Надо добавить в PATH путь к ~/.local/bin (см. Common:HowTo:Настроить:PATH:Добавить новый путь в PATH)
Затем:
python3 -m venv ~/.local --system-site-packages
Использовать так:
~/.local/bin/pip install somePackage
Отныне действующий пользователь по-умолчанию задействован со всеми своими правами.
Можно сделать отдельный каталог для виртуальных решений для Python вроде ~/python_venv и впредь всё инициализировать в ней.