Futuras versões do Debian/Ubuntu podem não permitir instalação do pip fora de um ambiente virtual

Há conflitos entre o pip e o gerenciador de pacotes do Ubuntu/Debian

Jardeson Márcio
4 minutos de leitura

As próximas versões do Debian/Ubuntu provavelmente não permitirão mais instalações “pip install” fora de um ambiente virtual ou instalações separadas do Python. Isso se deve a conflitos entre o pip e o gerenciador de pacotes do sistema operacional. Apesar dessa instalação poder ser forçada, não é recomendado que ela seja feita.

Debian/Ubuntu não permitirão instalação do pip fora de um ambiente virtual

O software enviado com uma distribuição Linux pode ser quebrado pela instalação de pacotes usando pip. Tudo o que o usuário precisa fazer é instalar um pacote mais recente e incompatível com uma versão que foi instalada dos repositórios oficiais da distribuição Linux.

Como o Python é tão amplamente usado hoje em dia, os usuários podem facilmente quebrar pacotes críticos de distro. A quebra pode ocorrer para instalações de pip em todo o sistema (sudo pip install), bem como instalações de usuário (pip install –user), mas especialmente o último, pois tentar recuperar disso pode resultar na remoção pacotes instalados usando o gerenciador de pacotes da distribuição Linux.

futuras-versoes-do-debian-ubuntu-podem-nao-permitir-instalacao-do-pip-fora-de-um-ambiente-virtual

Por esse motivo, os próximos lançamentos Debian (Debian 12 Bookworm) e Ubuntu (Ubuntu 23.04 Lunar Lobster) provavelmente adotarão o PEP668 (PEP = Python Enhancement Proposal), marcando os ambientes base do Python como “gerenciados externamente” e não permitindo mais pip regular instalar o uso para ambas as instalações do usuário e do sistema.

A mudança já está disponível no Debian Testing e no Ubuntu 23.04 Lunar Lobster. Há também uma proposta para incluir isso no Fedora 38, mas isso não chegou ao Fedora 38 por enquanto.

Alternativas para usar “pip install” diretamente (não recomendado)

O Linux Uprising listou algumas maneiras de executar a instalação mesmo com a mudança. Veja abaixo:

Se possível, tente instalar o aplicativo Python ou módulo de biblioteca dos repositórios Debian/Ubuntu. Para aplicativos Python que não estão disponíveis nos repositórios Debian/Ubuntu, você pode usar o pipx para instalá-los. Isso configura um ambiente isolado e instala o aplicativo e suas dependências nele.

Por exemplo, em vez de executar:

Terminal
pip install --user some-python-app

Você pode usar:

Terminal
pipx install some-python-app

Para os módulos da biblioteca Python que não estão disponíveis no Debian, 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:

Terminal
pip install --user some-python-module-or-app

#ou

pip install --user -r requirements.txt

Você pode usar:

Terminal
python3 -m venv .venv/some-python-module-or-app

source .venv/some-python-module-or-app/bin/activate

python3 -m pip install some-python-module-or-app

#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 –system-site-packagessinalizador.

Instale seu próprio Python (da fonte) em, por exemplo /usr/local, .

Se você realmente precisar, 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 –break-system-packagesopção para pip, exportando PIP_BREAK_SYSTEM_PACKAGES=1ou adicionando o seguinte ao arquivo ~/.config/pip/pip.confou :/etc/pip.conf

[global]

break-system-packages = true

Share This Article
Follow:
Jardeson é Mestre em Tecnologia Agroalimentar e Licenciado em Ciências Agrária pela Universidade Federal da Paraíba. Entusiasta no mundo tecnológico, gosta de arquitetura e design gráfico. Economia, tecnologia e atualidade são focos de suas leituras diárias. Acredita que seu dia pode ser salvo por um vídeo engraçado.