[ Пред. ] [ Содержание ] [ След. ]

pip3

[ @python @pip3 ]

 


*todo Python pip — пересмотреть полностью


При использовании команд установки вроде «pip3 install somePackage» может возникнуть ошибка «error: externally-managed-environment».


Есть несколько решений


sudo mcedit nano pip.conf
После [global> добавить строку
break-system-packages = true
Теперь этот параметр будет автоматически (и незаметно) добавляться к любой команде типа «pip3 install somePackage». Когда-то про это всё забудется и при очередной установке чего-то система сломается, и понять причину будет очень сложно.

sudo mv /usr/lib/python3.11/EXTERNALLY-MANAGED /usr/lib/python3.11/EXTERNALLY-MANAGED.old
По-сути это аналог предыдущего решения, просто система будет считать, что нужного файла нет на диске и не будет выкидывать сообщение об ошибке. Мера временная, после какого-то обновления системы отсутствующий файл может снова появиться.

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 и впредь всё инициализировать в ней.