Ambientes virtuais
Nesta aula, você aprenderá a importância de ambientes virtuais no Python, como criar e ativar um ambiente com venv, e como gerenciar dependências usando requirements.txt. Ao final, será capaz de isolar projetos e reproduzir ambientes de forma consistente.
Ambientes virtuais são uma ferramenta essencial no desenvolvimento Python. Eles permitem que cada projeto tenha suas próprias dependências, isoladas do sistema global e de outros projetos. Isso evita conflitos de versões e garante que o que funciona em um ambiente funcione em outro.
Nesta aula, vamos explorar o conceito de isolamento, criar ambientes virtuais com o módulo venv, ativá-los e gerenciar dependências com requirements.txt. Ao final, você terá uma base sólida para organizar seus projetos de forma profissional.
Por que isolar
Quando você instala pacotes globalmente no Python, eles ficam disponíveis para todos os projetos. Isso pode causar problemas: um projeto pode precisar da versão 1.0 de uma biblioteca, enquanto outro precisa da 2.0. Se você atualizar globalmente, um dos projetos pode quebrar. Além disso, projetos diferentes podem usar versões diferentes do mesmo pacote, e não há como manter isso sem isolamento.
Outro motivo para isolar é a reprodutibilidade. Quando você compartilha seu projeto com outras pessoas, ou o implanta em um servidor, é crucial que as mesmas versões das dependências sejam instaladas. Com um ambiente virtual e um arquivo requirements.txt, você garante que todos usem exatamente as mesmas versões, evitando o famoso problema "funciona na minha máquina".
Além disso, ambientes virtuais mantêm seu sistema operacional limpo, pois você não instala pacotes Python globalmente, o que pode ser difícil de gerenciar e remover. Isso é especialmente importante em sistemas Linux, onde o Python global é usado pelo próprio sistema.
venv
O módulo venv é a ferramenta padrão do Python para criar ambientes virtuais. Ele está disponível desde o Python 3.3 e é a maneira recomendada de isolar dependências. Com ele, você cria uma pasta que contém uma instalação isolada do Python e seus pacotes.
Para criar um ambiente virtual, use o comando python -m venv nome_do_ambiente. Isso criará uma pasta com o nome especificado, contendo uma estrutura como bin (ou Scripts no Windows) e lib. Dentro dessa estrutura, há um interpretador Python próprio e um diretório para instalar pacotes.
Vamos criar um ambiente virtual chamado venv dentro do diretório do seu projeto:
python -m venv venvEsse comando cria a pasta venv no diretório atual. Você pode usar qualquer nome, mas é comum usar venv ou .venv para indicar que é um ambiente virtual. A partir daí, você pode ativá-lo para usar o Python e os pacotes desse ambiente.
É importante notar que o venv não é a única ferramenta; existem outras como virtualenv e conda, mas venv é o padrão incluído no Python e suficiente para a maioria dos casos.
Ativando
Ativar um ambiente virtual é o passo que faz com que os comandos python e pip apontem para o ambiente isolado, e não para o Python global. Isso é feito executando um script de ativação específico do seu sistema operacional.
No Linux ou macOS, o comando é:
source venv/bin/activateNo Windows (Prompt de Comando), o comando é:
venv\Scripts\activate.batNo Windows (PowerShell), o comando é:
venv\Scripts\Activate.ps1Após a ativação, você verá o nome do ambiente no prompt, geralmente entre parênteses, como (venv) C:\meu_projeto>. Isso indica que o ambiente está ativo. Agora, quando você executar python, usará o interpretador do ambiente, e pip instalará pacotes apenas nesse ambiente.
Para desativar o ambiente, basta executar o comando deactivate. Isso retorna ao Python global.
É importante ativar o ambiente sempre que for trabalhar no projeto. Se você abrir um novo terminal, precisará ativar novamente.
requirements.txt
O arquivo requirements.txt é um arquivo de texto que lista todas as dependências do projeto, geralmente com suas versões. Ele permite que você instale todas as dependências de uma vez com um único comando: pip install -r requirements.txt. Isso é fundamental para compartilhar o projeto e para implantação.
Para gerar o arquivo, você pode usar o comando pip freeze, que lista todos os pacotes instalados no ambiente ativo com suas versões exatas. Redirecione a saída para um arquivo:
pip freeze > requirements.txtO arquivo gerado terá um formato como:
requests==2.31.0
flask==3.0.0
numpy==1.26.0Você também pode criar o arquivo manualmente, especificando as versões desejadas. Por exemplo:
requests==2.31.0
flask==3.0.0Ou usar intervalos de versão, como flask>=2.0, mas é recomendável fixar versões para garantir reprodutibilidade.
Quando outra pessoa clonar seu projeto, ela pode criar um ambiente virtual, ativá-lo e instalar todas as dependências com:
pip install -r requirements.txtIsso garante que todos usem as mesmas versões.
Boas práticas
Aqui estão algumas boas práticas ao usar ambientes virtuais:
- Sempre crie um ambiente virtual para cada projeto, mesmo para projetos pequenos.
- Não inclua a pasta do ambiente virtual no controle de versão (por exemplo, Git). Adicione
venv/ao arquivo.gitignore. - Mantenha o arquivo
requirements.txtatualizado sempre que adicionar ou remover dependências. - Use
pip freezepara gerar o arquivo, mas revise-o para remover pacotes desnecessários. - Considere usar
pip-toolsoupoetrypara gerenciamento mais avançado, masvenv+requirements.txté suficiente para muitos casos.
Referências
- Documentação oficial do venv
- Tutorial de ambientes virtuais no Python
- Documentação do pip freeze
- Guia do usuário do pip - arquivos de requisitos
- Real Python - Python Virtual Environments: A Primer
- Instalando pacotes usando pip e ambientes virtuais
Exercícios
Crie um ambiente virtual chamado
meu_envno diretório do seu projeto.✓ Resposta:python -m venv meu_envAtive o ambiente virtual no Linux/macOS e no Windows (escolha um e explique).
✓ Resposta: No Linux/macOS:source meu_env/bin/activate. No Windows (Prompt de Comando):meu_env\Scripts\activate.bat.Instale os pacotes
requestseflaskno ambiente ativo.✓ Resposta:pip install requests flaskGere o arquivo
requirements.txtcom as dependências instaladas.✓ Resposta:pip freeze > requirements.txtDesative o ambiente virtual e explique o que acontece.
✓ Resposta: Executedeactivateno terminal. Isso faz com que os comandospythonepipvoltem a apontar para o Python global, e o prompt perde o nome do ambiente.