Próximos lançamentos do Debian / Ubuntu provavelmente não permitirão mais a instalação do pip fora de um ambiente virtual

15 de março de 2023

python-pip

Os próximos lançamentos do Debian/Ubuntu provavelmente não permitirão mais pip install fora de um ambiente virtual ou Python separado por causa de conflitos entre o pip e o gerenciador de pacotes do sistema operacional. Ele ainda pode ser forçado, mas isso não é altamente recomendado.

O software fornecido com uma distribuição Linux pode ser (muito facilmente, eu poderia acrescentar) quebrado pela instalação de pacotes usando pip. Tudo o que o usuário precisa fazer é instalar um pacote (ou algumas de suas dependências) que seja mais recente e incompatível com uma versão que foi instalada a partir dos repositórios oficiais da distribuição Linux. E isso nem se trata de quebrar algum aplicativo – porque o Python é tão amplamente usado hoje em dia que os usuários podem facilmente quebrar pacotes de distro críticos.

A quebra pode ocorrer tanto para instalações pip em todo o sistema (sudo pip install), bem como instalações de usuário (pip install --user), mas especialmente a última, uma vez que tentar se recuperar disso pode resultar na remoção (usando pip, não o gerenciador de pacotes de distribuição) instalados usando o gerenciador de pacotes da distribuição Linux.

Por esta razão, os próximos lançamentos do Debian (Debian 12 Bookworm) e Ubuntu (Ubuntu 23.04 Lunar Lobster) provavelmente adotarão PEP668 (PEP = Python Enhancement Proposal), marcando os ambientes base Python como "gerenciados externamente" e não permitindo mais o uso regular de instalação de pip para instalações de usuário e sistema. Isso ainda pode ser forçado e, obviamente, existem alternativas.

A mudança já está disponível no Debian Testing e Ubuntu 23.04 Lunar Lobster (que terá uma versão beta em 30 de março, com a versão final prevista para 20 de abril). Há também uma proposta para incluir isso no Fedora 38 (que teve uma versão beta hoje), mas isso não chegou ao Fedora 38 por enquanto.

Eu disse "provavelmente adote" porque, mesmo que essa mudança já esteja presente no Debian Testing e no Ubuntu 23.04 Lunar Lobster, Stefano Rivera, um dos mantenedores do Debian/Ubuntu Python, mencionou que "se necessário, podemos reverter EXTERNALLY-MANAGED em nosso python3.11 para o lançamento do bookworm, mas eu gostaria de fazer isso acontecer...".

Então, quais são as alternativas para usar pip install diretamente? Dê uma olhada abaixo:

1. Se possível, tente instalar o aplicativo Python ou o módulo de biblioteca a partir dos repositórios Debian/Ubuntu.

2. Para aplicações Python que não estão disponíveis nos repositórios Debian/Ubuntu (ou para as quais você deseja instalar uma versão mais recente), você pode usar pipx para instalá-las. Isso configura um ambiente isolado e instala o aplicativo e suas dependências nele. 

Por exemplo, em vez de executar:

Comandos para usar no terminal

pip install --user algum-aplicativo-python

Você pode usar:

Comandos para usar no terminal

pipx install algum-aplicativo-python

3. Para módulos de biblioteca Python que não estão disponíveis no Debian (ou para os quais você deseja instalar uma versão mais recente), você pode usar virtualenv (pacote chamado virtualenv no Debian/Ubuntu)/venv (pacote chamado python3-venv no Debian/Ubuntu), que cria um ambiente isolado onde você pode instalar aplicativos e bibliotecas Python. 

Por exemplo, em vez de executar:

Comandos para usar no terminal

pip install --user some-python-module-or-app #orpip install --user -r requirements.txt

Você pode usar:

Comandos para usar no terminal

python3 -m venv .venv/algum-aplicativo-python

source .venv/algum-aplicativo-python/bin/activate

python3 -m pip install algum-aplicativo-python #ou

python3 -m pip install -r requirements.txt

Se necessário, o ambiente isolado também pode ter acesso aos módulos Python do sistema, com o sinalizador --system-site-packages.

4. Instale seu próprio Python (a partir do código-fonte), por exemplo, /usr/local.

Como mencionei acima, se você realmente precisar, você pode forçar a instalação de pacotes Python usando pip, mas faça isso por sua conta e risco! Você pode forçar a instalação de pacotes usando pip passando a opção --break-system-packages para pip, exportando PIP_BREAK_SYSTEM_PACKAGES=1 ou adicionando o seguinte ao arquivo ~/.config/pip/pip.conf ou /etc/pip.conf:

Comandos para usar no terminal

[global]break-system-packages = true

Esse post foi traduzido do site LinuxUprising.com pela rtland.team.

Linux Uprising Blog
Propaganda
Propaganda