Gerenciamento de Ambientes Virtuais Python

PythonBeginner
Pratique Agora

Introdução

Projetos Python frequentemente precisam de diferentes versões de pacotes. Um ambiente virtual fornece a um projeto seu próprio interpretador Python e diretório de pacotes, de modo que a instalação de um pacote para um projeto não altere o ambiente Python global ou outro projeto.

Neste laboratório, você criará um ambiente virtual com o módulo nativo venv, ativá-lo-á, instalará um pacote dentro dele e criará um segundo ambiente para confirmar que os ambientes estão isolados um do outro. Todo o trabalho será realizado em /home/labex/project.

Criar um Ambiente Virtual para o Projeto

Nesta etapa, você criará um ambiente virtual para um projeto Python. Um ambiente virtual é apenas um diretório que contém um executável Python, scripts de ativação e sua própria área de instalação de pacotes.

Primeiro, mova-se para o espaço de trabalho do projeto. Manter os arquivos do laboratório em /home/labex/project torna o ambiente fácil de encontrar e mantém seu trabalho separado dos arquivos do sistema.

cd /home/labex/project

Antes de criar o ambiente, verifique a versão do Python disponível no sistema. O comando python3 --version imprime a versão do interpretador que o venv utilizará.

python3 --version

Você deverá ver uma saída do Python 3 semelhante a esta:

Python 3...

Agora, crie um ambiente virtual chamado project-env. A opção -m venv instrui o Python a executar seu módulo nativo venv como uma ferramenta de linha de comando, e project-env é o diretório que conterá o ambiente.

python3 -m venv project-env

Liste o novo diretório para ver a estrutura criada pelo venv.

ls project-env

As entradas exatas podem variar ligeiramente, mas você deverá ver arquivos e pastas como estes:

bin
include
lib
pyvenv.cfg

O arquivo pyvenv.cfg registra como o ambiente foi criado. Inspecione-o agora.

cat project-env/pyvenv.cfg

Procure por include-system-site-packages = false. Essa configuração significa que este ambiente não compartilha automaticamente pacotes Python instalados globalmente.

Ativar o Ambiente e Instalar um Pacote

Nesta etapa, você ativará o project-env e instalará um pacote dentro dele. A ativação altera as variáveis de ambiente do shell para que comandos como python e pip apontem primeiro para o ambiente virtual.

Certifique-se de que você ainda está no espaço de trabalho do projeto.

cd /home/labex/project

Use source para executar o script de ativação no seu shell atual. Isso é importante porque um script filho não pode alterar o shell pai, mas o source pode atualizar o shell em que você está digitando.

source project-env/bin/activate

Após a ativação, o prompt do shell geralmente começa com (project-env). Confirme se o python agora aponta para dentro do ambiente virtual imprimindo dois caminhos do Python. sys.prefix é o ambiente ativo, enquanto sys.base_prefix é a instalação base do Python.

python -c "import sys; print(sys.prefix); print(sys.base_prefix)"

A primeira linha deve ser o seu ambiente virtual, e a segunda linha deve ser o local do Python do sistema:

/home/labex/project/project-env
/usr...

Instale um pequeno pacote chamado colorama no ambiente ativo. Executar python -m pip usa o pip que pertence ao interpretador Python atualmente ativo.

python -m pip install colorama==0.4.6

Quando a instalação terminar, o pip deverá informar que o colorama foi instalado com sucesso.

Verifique o pacote a partir do Python importando-o e imprimindo sua versão.

python -c "import colorama; print(colorama.__version__)"

A saída deve ser:

0.4.6

Você pode sair do ambiente virtual com deactivate. Isso retorna o comportamento de busca do python e do pip para o ambiente de shell normal.

deactivate

Criar um Segundo Ambiente Isolado

Nesta etapa, você criará outro ambiente virtual e o comparará com o project-env. Ambientes separados podem usar o mesmo interpretador Python base enquanto mantêm seus pacotes instalados separados.

Retorne ao espaço de trabalho do projeto.

cd /home/labex/project

Encontre o executável python3 do sistema. O comando command -v imprime o caminho que o shell executará para um nome de comando.

command -v python3

O caminho geralmente é:

/usr/bin/python3

Crie um segundo ambiente chamado tools-env. A opção --prompt tools-env define o texto do prompt de ativação, o que é útil quando você trabalha com vários ambientes.

python3 -m venv --prompt tools-env tools-env

Agora, compare os dois prefixos de ambiente. Cada comando executa o executável Python dentro de um ambiente virtual diferente e imprime seu prefixo ativo.

project-env/bin/python -c "import sys; print(sys.prefix)"
tools-env/bin/python -c "import sys; print(sys.prefix)"

Você deve ver dois diretórios diferentes:

/home/labex/project/project-env
/home/labex/project/tools-env

Finalmente, verifique se o colorama está disponível no tools-env. Você instalou o colorama apenas no project-env, portanto, o segundo ambiente não deve encontrá-lo.

tools-env/bin/python -c "import importlib.util; print(importlib.util.find_spec('colorama'))"

A saída esperada é:

None

Isso confirma que os pacotes instalados em um ambiente virtual não aparecem automaticamente em outro ambiente virtual.

Resumo

Você criou um ambiente virtual Python, inspecionou sua configuração, ativou-o, instalou um pacote dentro dele e criou um segundo ambiente para confirmar o isolamento de pacotes. Você também praticou o uso de python3 -m venv, source, python -m pip e caminhos diretos do Python do ambiente para entender qual interpretador está em execução.