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.



