Como limpar ambientes virtuais

PythonBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá as práticas essenciais para gerenciar ambientes virtuais Python. Abordaremos como criar um ambiente isolado para um projeto, instalar dependências específicas, remover pacotes desnecessários e, finalmente, excluir o ambiente para liberar espaço em disco. Essas habilidades são fundamentais para manter um fluxo de trabalho de desenvolvimento limpo e organizado.

Criação e Ativação de um Ambiente Virtual

Primeiro, vamos criar um ambiente isolado para um projeto de exemplo. O uso de um ambiente virtual garante que os pacotes deste projeto não entrem em conflito com pacotes de outros projetos ou com a instalação global do Python. Utilizaremos o módulo venv, que é a ferramenta padrão incluída com o Python.

O script de configuração já criou um diretório de projeto para nós em /home/labex/project/my_web_app. Vamos navegar até ele.

cd my_web_app

Agora, crie um ambiente virtual chamado venv dentro deste diretório. É uma convenção comum nomear o diretório do ambiente como venv.

python3 -m venv venv

Este comando cria um diretório venv contendo uma nova instalação do Python. Você pode ver seu conteúdo executando:

ls -F venv/

Você deverá ver subdiretórios como bin/, include/, lib/, e um arquivo de configuração.

bin/  include/  lib/  lib64@  pyvenv.cfg

Para começar a usar este ambiente, você precisa "ativá-lo".

source venv/bin/activate

Após executar este comando, você notará que o prompt do seu shell muda para incluir (venv), indicando que o ambiente virtual está ativo. Quaisquer comandos Python ou pip que você executar agora usarão os executáveis e pacotes dentro deste ambiente.

Você pode verificar isso checando o caminho para o executável Python:

which python

A saída apontará para o binário Python dentro do seu diretório venv.

/home/labex/project/my_web_app/venv/bin/python

Instalação e Isolamento de Dependências

Com o ambiente virtual ativo, podemos agora instalar as dependências do projeto. Um arquivo requirements.txt foi criado para você, que lista os pacotes necessários.

Instale os pacotes usando pip:

pip install -r requirements.txt

O Pip fará o download e instalará flask e requests e suas dependências no venv.

Para ver os pacotes instalados especificamente neste ambiente, use pip list:

pip list

Você verá flask, requests e outros pacotes que acabaram de ser instalados.

Package            Version
------------------ --------
certifi            ...
charset-normalizer ...
click              ...
Flask              2.2.2
idna               ...
itsdangerous       ...
Jinja2             ...
MarkupSafe         ...
pip                ...
requests           2.28.1
setuptools         ...
urllib3            ...
Werkzeug           ...

Agora, vamos ver o poder do isolamento. Desative o ambiente para retornar ao contexto global do seu sistema.

deactivate

O prefixo (venv) no seu prompt desaparecerá. Agora, execute pip list novamente.

pip list

Você notará que flask e requests não estão mais na lista, pois foram instalados apenas dentro do ambiente virtual, mantendo seu ambiente Python global limpo.

Remoção de Pacotes Não Utilizados

À medida que um projeto evolui, algumas dependências podem tornar-se obsoletas. É uma boa prática removê-las para manter o ambiente enxuto e atualizar o seu arquivo requirements.txt.

Primeiro, reative o ambiente virtual para gerenciar seus pacotes.

source venv/bin/activate

Vamos supor que nosso projeto não precise mais do pacote requests. Podemos desinstalá-lo usando pip. O flag -y confirma automaticamente a desinstalação.

pip uninstall -y requests

Verifique se o pacote foi removido listando novamente os pacotes instalados.

pip list

Você verá que requests e suas dependências (como urllib3, certifi, etc., se não forem mais necessárias por nenhum outro pacote) desapareceram.

Após remover um pacote, você deve atualizar seu arquivo requirements.txt para refletir o estado atual do ambiente. Você pode fazer isso "congelando" a lista de pacotes atual no arquivo.

pip freeze > requirements.txt

Você pode visualizar o arquivo atualizado para confirmar a mudança:

cat requirements.txt

O arquivo agora listará apenas flask e suas dependências.

click==...
Flask==2.2.2
itsdangerous==...
Jinja2==...
MarkupSafe==...
Werkzeug==...

Finalmente, vamos desativar o ambiente por enquanto.

deactivate

Exclusão do Ambiente Virtual Completo

Quando um projeto é concluído, ou se você quiser começar de novo com um ambiente limpo, o método de limpeza mais simples é excluir todo o diretório do ambiente virtual.

Primeiro, certifique-se de que você não está dentro do diretório my_web_app, pois geralmente não é uma boa ideia excluir um diretório em que você está atualmente. Vamos mover para o diretório pai.

cd /home/labex/project

Antes de excluí-lo, você pode verificar quanto espaço em disco o ambiente virtual está usando com o comando du (disk usage).

du -sh my_web_app/venv

A saída mostrará o tamanho total do diretório.

30M     my_web_app/venv

Agora, remova todo o diretório venv. O comando rm -rf remove recursiva e forçadamente o diretório e todo o seu conteúdo. Tenha cuidado com este comando.

rm -rf my_web_app/venv

Verifique se o diretório desapareceu listando o conteúdo de my_web_app.

ls my_web_app

Você verá que apenas o arquivo requirements.txt permanece. O ambiente virtual foi completamente limpo.

requirements.txt

Resumo

Neste laboratório, você aprendeu o ciclo de vida completo do gerenciamento de um ambiente virtual Python. Você praticou a criação de um ambiente com venv, sua ativação, a instalação de dependências a partir de um arquivo requirements.txt, a observação do isolamento de pacotes, a remoção de pacotes desnecessários e, finalmente, a limpeza excluindo todo o diretório do ambiente. Estas são habilidades cruciais para qualquer desenvolvedor Python para manter configurações de projeto limpas, reproduzíveis e livres de conflitos.