Ambientes virtuais
Nesta aula, você aprenderá a importância de isolar dependências em projetos Python, como criar e ativar ambientes virtuais com venv, e como gerenciar dependências com requirements.txt, incluindo boas práticas e exercícios práticos.
Ambientes virtuais são uma ferramenta essencial no desenvolvimento Python moderno. Eles permitem que cada projeto tenha suas próprias dependências isoladas do sistema, evitando conflitos de versões e garantindo reprodutibilidade. Nesta aula, você vai entender por que isolar, como usar o módulo venv para criar ambientes, como ativá-los e como gerenciar as dependências com requirements.txt.
Vamos abordar desde o conceito até a prática, com exemplos passo a passo que você pode reproduzir em seu terminal. Ao final, você terá uma base sólida para aplicar em seus projetos profissionais.
Por que isolar
Quando você instala pacotes Python globalmente, todas as aplicações do seu sistema compartilham as mesmas versões. Isso pode causar conflitos: um projeto precisa da versão 1.x de uma biblioteca, enquanto outro precisa da 2.x. Atualizar um pacote global pode quebrar outro projeto que dependia de uma versão antiga. Ambientes virtuais resolvem esse problema criando um diretório isolado por projeto, onde as dependências são instaladas sem interferir no sistema.
Além de evitar conflitos, isolar dependências melhora a reprodutibilidade: você pode documentar exatamente quais pacotes e versões seu projeto usa, permitindo que outras pessoas (ou você mesmo em outra máquina) recriem o ambiente com facilidade. Isso é especialmente importante em equipes e em implantações em produção.
Por fim, ambientes virtuais facilitam o gerenciamento de versões do Python. Você pode criar um ambiente com uma versão específica do interpretador, mesmo que o sistema tenha outra, usando ferramentas como pyenv em conjunto com venv.
venv
O módulo venv é a ferramenta padrão do Python para criar ambientes virtuais. Ele está disponível a partir da versão 3.3 e não requer instalação adicional. Para criar um ambiente, navegue até o diretório do projeto e execute o comando:
python -m venv venv
Isso criará uma pasta chamada venv (você pode escolher outro nome, mas é comum usar venv ou .venv) contendo uma cópia do interpretador Python, a ferramenta pip e algumas bibliotecas básicas. A estrutura interna varia conforme o sistema operacional, mas sempre há um diretório bin (Linux/macOS) ou Scripts (Windows) com os executáveis.
É importante notar que o ambiente virtual é dependente do caminho onde foi criado. Se você mover o projeto de pasta, o ambiente pode quebrar. Por isso, é comum não versionar a pasta do ambiente (adicioná-la ao .gitignore) e recriá-la quando necessário.
Exemplo de criação no Linux:
$ mkdir meu_projeto
$ cd meu_projeto
$ python3 -m venv venv
Ativando
Após criar o ambiente, você precisa ativá-lo para que os comandos python e pip apontem para o ambiente isolado. A ativação modifica o PATH do seu shell, colocando o diretório bin (ou Scripts no Windows) à frente, de modo que ao digitar python você use o interpretador do ambiente.
No Linux/macOS, a ativação é feita com:
source venv/bin/activate
No Windows (Prompt de Comando), use:
venv\Scripts\activate
No Windows PowerShell, o comando é:
venv\Scripts\Activate.ps1
Quando ativado, você verá o nome do ambiente entre parênteses no prompt, por exemplo: (venv) C:\meu_projeto>. Para desativar, basta digitar deactivate. No Linux/macOS, o comando é apenas deactivate; no Windows, também.
É importante lembrar que a ativação é temporária e específica para o terminal. Cada novo terminal que você abrir precisará ser ativado novamente. Alguns editores (como VS Code) podem detectar e ativar automaticamente o ambiente, mas é bom saber fazer manualmente.
requirements.txt
O arquivo requirements.txt é uma convenção para listar as dependências de um projeto. Ele permite que outras pessoas instalem todas as dependências com um único comando. A sintaxe básica é uma lista de pacotes, opcionalmente com a versão especificada.
Para gerar o arquivo a partir do ambiente ativo, use:
pip freeze > requirements.txt
O comando pip freeze lista todos os pacotes instalados no ambiente atual com suas versões exatas. O redirecionamento > salva essa saída no arquivo. Você pode ver o conteúdo do arquivo com cat requirements.txt (Linux) ou type requirements.txt (Windows).
Para instalar as dependências em um novo ambiente, crie e ative o ambiente e depois execute:
pip install -r requirements.txt
Esse comando lê o arquivo e instala cada pacote listado. É uma prática recomendada versionar o requirements.txt no controle de versão (git), pois ele documenta as dependências do projeto.
Exemplo de requirements.txt:
Flask==2.3.2
requests==2.31.0
numpy==1.24.3
Você também pode usar operadores de comparação, como >=, para permitir versões mais novas, mas é mais comum fixar as versões para garantir reprodutibilidade.
Boas práticas
Ao trabalhar com ambientes virtuais, adote estas boas práticas:
- Nunca versionar o diretório do ambiente: adicione
venv/ou.venv/ao seu.gitignore. - Sempre crie um ambiente virtual por projeto, mesmo para projetos pequenos.
- Documente as dependências no
requirements.txte mantenha-o atualizado. - Use nomes consistentes para o ambiente, como
venvou.venv, para facilitar a colaboração. - Verifique se o ambiente está ativo antes de instalar pacotes, usando
which python(Linux) ouwhere python(Windows).
Referências
- Documentação oficial do venv
- pip freeze - documentação
- pip install - documentação
- Python Virtual Environments: A Primer - Real Python
- Installing packages using pip and virtual environments - Python Packaging Authority
Exercícios
- Crie um diretório chamado
meu_projeto, navegue até ele e crie um ambiente virtual chamadovenv. Liste o conteúdo do diretóriovenvpara verificar a estrutura.✓ Resposta:mkdir meu_projeto cd meu_projeto python -m venv venv ls -la venv # Linux/macOS # ou no Windows: dir venv - Ative o ambiente virtual que você criou no exercício 1. Em seguida, verifique qual interpretador Python está sendo usado com
which python(Linux/macOS) ouwhere python(Windows).✓ Resposta:# Linux/macOS source venv/bin/activate which python # Output: /caminho/para/meu_projeto/venv/bin/python # Windows Prompt de Comando venv\Scripts\activate where python # Output: C:\...\meu_projeto\venv\Scripts\python.exe - Com o ambiente ativo, instale as bibliotecas
requestseflaskusando o pip. Em seguida, gere o arquivorequirements.txtcompip freezee mostre seu conteúdo.✓ Resposta:pip install requests flask pip freeze > requirements.txt cat requirements.txt # Linux/macOS # ou no Windows: type requirements.txt - Desative o ambiente virtual com o comando
deactivate. Depois, crie um novo ambiente chamadonovo_venve instale as dependências a partir dorequirements.txtque você gerou no exercício 3. Verifique se os pacotes foram instalados.✓ Resposta:deactivate python -m venv novo_venv source novo_venv/bin/activate # Linux/macOS # ou no Windows: novo_venv\Scripts\activate pip install -r requirements.txt pip list - Explique por que é importante isolar as dependências de um projeto Python e dê um exemplo de conflito que pode ocorrer sem isolamento.
✓ Resposta: Isolar dependências evita conflitos de versão e garante que cada projeto use exatamente as bibliotecas que precisa. Por exemplo, se o Projeto A usa a versão 1.0 da biblioteca X e o Projeto B usa a versão 2.0, e você instala a 2.0 globalmente, o Projeto A pode quebrar se a API mudou. Com ambientes virtuais, cada projeto tem sua própria versão, mantendo a estabilidade e a reprodutibilidade.
Observações finais
Ambientes virtuais são fundamentais para o desenvolvimento profissional em Python. Dominar seu uso evita dores de cabeça e facilita o trabalho em equipe. Lembre-se de sempre documentar as dependências e manter o ambiente limpo. Com a prática, você verá como é simples e poderoso.