Se você encontrou recentemente o erro “ambiente gerenciado externamente” ao instalar pacotes pip no Linux, veja como corrigi-lo.

Se você trabalha frequentemente com Python e recentemente mudou para o Ubuntu 23.04 ou Fedora versão 38, é provável que você me deparei com o erro "ambiente gerenciado externamente" ao instalar pacotes com o gerenciador de pacotes Python, pip.

Isso pode ser frustrante e bastante surpreendente, pois esse erro nunca aparecia nas versões mais antigas do Ubuntu, Fedora e outras distribuições. Vamos aprender exatamente o que está causando esse erro e como você pode corrigi-lo rapidamente.

Por que ocorre o erro "ambiente gerenciado externamente"

As versões mais recentes de todas as distribuições Linux estão adotando os padrões definidos no PEP-668. Essas mudanças garantem que os pacotes pip não serão instalados em um contexto global por padrão.

Isso foi implementado na tentativa de evitar conflitos entre o gerenciador de pacotes da distribuição e as ferramentas de gerenciamento de pacotes Python. Você pode aprender mais sobre os detalhes no

instagram viewer
documentação oficial PEP-668. Se desejar reverter ou substituir esse mecanismo, você pode adotar três abordagens.

1. Exclua o arquivo "GERENCIADO EXTERNAMENTE"

Esta é a correção mais simples para o erro pip "gerenciado externamente". Tudo que você precisa fazer é navegar até /usr/lib/python3.xx e exclua o GERENCIADO EXTERNAMENTE arquivo no diretório. Aqui estão os comandos para fazer isso:

cd /usr/lib/python3.11
sudo rm EXTERNALLY-MANAGED

Isso é tudo que você precisa fazer para corrigir o erro. Se você optar por restaurar esse mecanismo, crie o mesmo arquivo novamente com o comando de toque:

sudo touch EXTERNALLY-MANAGED

Agora você deve conseguir instalar pacotes perfeitamente com pip ou pip3.

2. Use ambientes virtuais para instalar pacotes pip

Outra abordagem que você pode adotar é usar ambientes virtuais para seu projeto Python. Os ambientes virtuais são uma ótima maneira de isolar pacotes específicos de programas do sistema operacional e também permitem que você organize seu projeto de maneira organizada.

Veja como criar um ambiente virtual e instalar pacotes com pip:

  1. Primeiro, crie o ambiente virtual com:
    python3 -m venv venv
  2. Obtenha o arquivo activate dentro do diretório bin usando o comando source:
    source venv/bin/activate

O prompt do shell deve ser atualizado com o nome do ambiente virtual. Agora você poderá instalar qualquer pacote Python que desejar.

Como você pode ver, o aberto O pacote Python não pôde ser instalado inicialmente, mas depois de criar e mudar para um ambiente virtual, ele foi instalado perfeitamente.

3. Use pipx para instalar pacotes Python

pipx é um utilitário para instalação de pacotes Python em ambientes virtuais e isolados. Ele automatiza etapas como a criação de ambientes virtuais para cada pacote e a criação de links simbólicos para os pacotes no .local/bin pasta para que você possa chamar cada pacote do shell o tempo todo.

Usar o pipx para instalar pacotes ajuda a evitar o erro "ambiente gerenciado externamente", pois instala pacotes em ambientes virtuais. Para usar o pipx, primeiro instale-o com o gerenciador de pacotes padrão da sua distribuição.

Em derivados do Ubuntu/Debian:

sudo apt-get install pipx

Em sistemas baseados em Arch:

sudo pacman -S pipx

No Fedora/CentOS/RHEL:

sudo dnf install pipx

Depois de instalar o pipx, use-o da mesma forma que usaria o pip para instalar pacotes. Aqui está um exemplo de comando:

pipx install openai

Para saber mais sobre o pipx, você pode consultar sua página de manual usando o comando man.

Agora você sabe como corrigir o erro "gerenciado externamente"

Depois de corrigir o erro "ambiente gerenciado externamente", você poderá continuar trabalhando em seu projeto ou praticando programação Python geral. Se você está focado neste último, você pode querer verificar as diferentes formas gamificadas de aprendizagem programação que o ajudará a aprender Python ou qualquer linguagem muito mais rápido de uma forma prática e gratificante caminho.