// aula · Python · Boas pråticas
O problema que o ambiente virtual resolve
VocĂȘ tem dois projetos no computador. O Projeto A usa Flask na versĂŁo 2.0. O Projeto B usa Flask na versĂŁo 3.0 â porque precisa de um recurso novo que sĂł existe nessa versĂŁo. Se vocĂȘ instalar os dois no mesmo Python do seu computador, um vai sobrescrever o outro. Um dos projetos vai quebrar.
Agora imagina que vocĂȘ tem 10 projetos, cada um com versĂ”es diferentes de bibliotecas diferentes. Seria um caos total. Ă exatamente esse problema que o ambiente virtual resolve.
Pensa assim: o Python instalado no seu computador Ă© como um supermercado. As bibliotecas sĂŁo os ingredientes. Sem ambiente virtual, todos os seus projetos compartilham a mesma despensa â e quando vocĂȘ muda um ingrediente para um projeto, pode estragar a receita de outro.
O ambiente virtual Ă© como dar para cada projeto a sua prĂłpria cozinha, com a sua prĂłpria despensa. O Projeto A tem a sua versĂŁo do Flask. O Projeto B tem a dele. Nenhum interfere no outro. Cada cozinha Ă© independente â mesmo que todas usem ingredientes vindos do mesmo supermercado.
O que Ă© um ambiente virtual?
Um ambiente virtual (virtual environment, ou venv) Ă© uma pasta que contĂ©m uma cĂłpia funcional do Python e um espaço isolado para instalar bibliotecas. Quando vocĂȘ "ativa" o ambiente, o sistema passa a usar o Python dessa pasta â e todas as instalaçÔes com pip install vĂŁo para dentro dela, nĂŁo para o Python global do computador.
Quando vocĂȘ desativa, tudo volta ao normal. O Python global nĂŁo sabe nem que o ambiente virtual existe.
Ao criar um ambiente virtual, o Python gera uma estrutura de pastas assim:
A pasta venv/ Ă© gerada e gerenciada automaticamente. VocĂȘ nĂŁo precisa mexer dentro dela. Basta criar, ativar, instalar libs com pip e trabalhar normalmente.
Como funciona por dentro
Quando vocĂȘ executa o script activate, ele faz uma coisa simples mas poderosa: modifica temporariamente as variĂĄveis de ambiente do seu terminal, especialmente o PATH. O PATH Ă© a lista de pastas onde o sistema operacional procura comandos. O activate coloca a pasta bin/ do seu venv no inĂcio dessa lista.
A partir daĂ, quando vocĂȘ digita python ou pip, o sistema encontra primeiro o Python e o pip do seu venv â nĂŁo os globais. Ă sĂł isso. Uma mudança de PATH. Quando vocĂȘ desativa (deactivate), o PATH volta ao normal.
which python retorna algo como /usr/bin/python3. O pip instala libs no Python global.
source venv/bin/activate
O script modifica o PATH do terminal, colocando venv/bin/ na frente. O nome do ambiente aparece entre parĂȘnteses no prompt: (venv) $.
which python retorna ./venv/bin/python. Qualquer pip install instala dentro de venv/lib/site-packages/. Nada vai para o Python global.
deactivate
O PATH volta ao estado original. O prompt some o (venv). O Python global volta a ser o padrĂŁo. O venv continua existindo na pasta â sĂł foi "desligado".
Desativar nĂŁo apaga nada. As libs que vocĂȘ instalou continuam lĂĄ dentro. Da prĂłxima vez que quiser usar o projeto, Ă© sĂł ativar de novo. O venv sĂł some se vocĂȘ apagar a pasta manualmente.
pip â o instalador de pacotes Python
O pip Ă© o gerenciador de pacotes oficial do Python. Ele se conecta ao PyPI (Python Package Index â o repositĂłrio pĂșblico de bibliotecas Python) e baixa, instala, atualiza e remove pacotes para vocĂȘ. Com um Ășnico comando vocĂȘ instala qualquer uma das centenas de milhares de bibliotecas disponĂveis.
Com o venv ativo, o pip instala tudo dentro do ambiente isolado. Sem venv ativo, ele instala no Python global â o que geralmente nĂŁo Ă© o que vocĂȘ quer.
# Instalar uma biblioteca pip install flask # Instalar uma versĂŁo especĂfica pip install flask==3.0.0 # Instalar a versĂŁo mĂnima pip install flask>=2.0 # Atualizar uma biblioteca para a versĂŁo mais recente pip install --upgrade flask # Desinstalar pip uninstall flask # Listar tudo que estĂĄ instalado no ambiente atual pip list # Ver detalhes de uma biblioteca especĂfica pip show flask # Ver se hĂĄ atualizaçÔes disponĂveis pip list --outdated
O PyPI (pypi.org) Ă© o repositĂłrio central de bibliotecas Python â pensa nele como uma loja de apps, mas para cĂłdigo Python. Qualquer desenvolvedor pode publicar uma lib lĂĄ. O pip baixa de lĂĄ por padrĂŁo. Quando vocĂȘ faz pip install flask, o pip vai ao PyPI, encontra o pacote flask, baixa e instala no seu ambiente.
Criando e usando um venv na prĂĄtica
mkdir meu_projeto cd meu_projeto
venv dentro do projeto com o Python e o pip isolados. VocĂȘ pode nomear a pasta do jeito que quiser, mas venv Ă© a convenção da comunidade.# Cria o ambiente virtual na pasta "venv" python -m venv venv # O "-m venv" chama o mĂłdulo venv que jĂĄ vem com o Python 3 # NĂŁo precisa instalar nada!
(venv) aparece no inĂcio do prompt â esse Ă© o sinal de que estĂĄ ativo.# Linux e Mac (bash/zsh) source venv/bin/activate # Windows â Prompt de Comando (cmd) venv\Scripts\activate.bat # Windows â PowerShell venv\Scripts\Activate.ps1 # ApĂłs ativar, o prompt muda para: (venv) $ # Linux/Mac (venv) C:\meu_projeto> # Windows
Se o Windows bloquear o script com erro de "polĂtica de execução", rode este comando no PowerShell como administrador e tente ativar novamente: Set-ExecutionPolicy RemoteSigned
# Mostra qual Python estĂĄ sendo usado which python # Linux/Mac where python # Windows # Deve mostrar o caminho dentro do venv: # /home/usuario/meu_projeto/venv/bin/python # Confirme a versĂŁo python --version
pip install flask
pip install requests
pip install sqlalchemy
# Tudo vai para venv/lib/site-packages/ â nĂŁo para o Python global
deactivate
# O (venv) some do prompt â voltou ao Python global
Criar: python -m venv venv â sĂł uma vez por projeto.
Ativar: source venv/bin/activate â toda vez que abrir o terminal para trabalhar no projeto.
Instalar: pip install nome-da-lib â com o venv ativo.
Desativar: deactivate â quando terminar.
requirements.txt â compartilhando dependĂȘncias
A pasta venv/ nĂŁo vai para o Git â ela Ă© grande, gerada automaticamente e especĂfica para cada mĂĄquina. Mas e quando outra pessoa quiser rodar seu projeto? Como ela vai saber quais bibliotecas instalar, e em quais versĂ”es?
A resposta Ă© o arquivo requirements.txt. Ele Ă© uma lista simples com o nome e a versĂŁo de cada biblioteca que o projeto usa. Com ele, qualquer pessoa consegue recriar exatamente o mesmo ambiente com um Ășnico comando.
Gerando o requirements.txt
# Gera o arquivo com todas as libs instaladas e suas versÔes exatas pip freeze > requirements.txt # Veja o que foi gerado: cat requirements.txt
blinker==1.8.2 click==8.1.7 Flask==3.0.3 itsdangerous==2.2.0 Jinja2==3.1.4 MarkupSafe==2.1.5 Werkzeug==3.0.3
Instalando a partir do requirements.txt
# 1. Clone o projeto (ou receba os arquivos) # 2. Crie e ative o venv python -m venv venv source venv/bin/activate # 3. Instale tudo de uma vez a partir do arquivo pip install -r requirements.txt # Pronto! O ambiente estĂĄ idĂȘntico ao original.
Toda vez que instalar uma biblioteca nova no projeto, rode pip freeze > requirements.txt de novo para manter o arquivo atualizado. à um håbito simples que evita muita dor de cabeça no futuro.
==)O pip freeze usa == para fixar a versĂŁo exata. Ă mais seguro â garante que todos usem exatamente o mesmo ambiente.
>=)VocĂȘ pode editar o arquivo manualmente e usar flask>=2.0 para aceitar qualquer versĂŁo 2.0+. Ătil em bibliotecas que vocĂȘ quer manter atualizadas.
.gitignore â o que nĂŁo deve ir para o Git
A pasta venv/ pode ter centenas de megabytes e contĂ©m arquivos binĂĄrios gerados especificamente para o sistema operacional e a versĂŁo do Python da sua mĂĄquina. Ela nĂŁo funciona na mĂĄquina de outra pessoa se for copiada. E Ă© completamente desnecessĂĄrio â qualquer um pode recriar com pip install -r requirements.txt.
Por isso, a pasta venv/ vai no .gitignore: um arquivo que diz ao Git quais arquivos e pastas ignorar completamente.
# Ambiente virtual â nunca sobe para o Git venv/ .venv/ env/ # Arquivos compilados Python __pycache__/ *.py[cod] *.pyo # VariĂĄveis de ambiente e segredos .env *.env # ConfiguraçÔes de editores .vscode/ .idea/ *.DS_Store # Logs e bancos de dados locais *.log *.sqlite3 db.sqlite3
O arquivo .env contĂ©m senhas, chaves de API e dados sensĂveis. Se for para o GitHub, qualquer pessoa no mundo pode ver. Sempre coloque .env no .gitignore. Para compartilhar quais variĂĄveis existem (sem os valores), crie um .env.example com valores fictĂcios â esse sim pode ir para o repositĂłrio.
Fluxo completo â do zero ao projeto funcionando
Com o tempo, criar e configurar um ambiente virtual vai se tornar automĂĄtico â como escovar os dentes. Aqui estĂĄ o fluxo completo que vocĂȘ deve seguir em todo projeto novo.
# ââ CRIANDO O PROJETO ââââââââââââââââââââââââââââââââââââ mkdir meu_projeto && cd meu_projeto # Criar o venv python -m venv venv # Ativar (Linux/Mac) source venv/bin/activate # Criar o .gitignore imediatamente echo "venv/" > .gitignore echo ".env" >> .gitignore echo "__pycache__/" >> .gitignore # Criar o .env para variĂĄveis de ambiente touch .env # ââ INSTALANDO DEPENDĂNCIAS ââââââââââââââââââââââââââââââ pip install flask pip install python-dotenv # Salvar as dependĂȘncias pip freeze > requirements.txt # ââ TRABALHANDO NO PROJETO ââââââââââââââââââââââââââââââ # (escreva seu cĂłdigo aqui) # ââ SUBINDO PARA O GIT ââââââââââââââââââââââââââââââââââ git init git add . git commit -m "primeiro commit" # venv/ e .env nĂŁo vĂŁo â o .gitignore cuida disso
# Clonou o projeto do GitHub git clone https://github.com/usuario/meu_projeto cd meu_projeto # Criar o prĂłprio venv local python -m venv venv source venv/bin/activate # Instalar todas as dependĂȘncias de uma vez pip install -r requirements.txt # Copiar o .env.example e preencher com os valores reais cp .env.example .env # (edite o .env com suas credenciais) # Rodar o projeto python app.py
Outras ferramentas â pipenv e poetry
O venv + pip Ă© a dupla padrĂŁo que vem com o Python e funciona muito bem. Mas existem ferramentas mais modernas que combinam a criação do ambiente, gerenciamento de dependĂȘncias e outras funcionalidades numa coisa sĂł.
| Ferramenta | O que faz diferente | Quando usar |
|---|---|---|
venv + pip |
PadrĂŁo â jĂĄ vem com Python 3, sem instalação extra | Qualquer projeto â Ă© o ponto de partida ideal |
pipenv |
Combina venv e pip. Usa Pipfile em vez de requirements.txt. Separa dependĂȘncias de dev e produção automaticamente |
Projetos pequenos/mĂ©dios onde vocĂȘ quer mais conforto que o pip |
poetry |
Gerencia dependĂȘncias, venv, versĂ”es e publicação de pacotes. Arquivo pyproject.toml. Mais moderno e poderoso |
Projetos maiores, libs que vocĂȘ vai publicar no PyPI |
conda |
Gerenciador de ambientes da Anaconda. Suporte a Python e outras linguagens. Muito usado em ciĂȘncia de dados | Data science, machine learning, quando vocĂȘ usa Jupyter Notebooks |
Aprenda bem o venv + pip primeiro. Eles sĂŁo o padrĂŁo da comunidade, estĂŁo em todos os tutoriais e funcionam em qualquer ambiente. Quando vocĂȘ se sentir confortĂĄvel, explore o Poetry â Ă© a ferramenta mais moderna e adotada atualmente para projetos profissionais.
ReferĂȘncia rĂĄpida â comandos do dia a dia
| O que fazer | Linux / Mac | Windows |
|---|---|---|
| Criar venv | python -m venv venv | python -m venv venv |
| Ativar | source venv/bin/activate | venv\Scripts\activate |
| Desativar | deactivate | deactivate |
| Instalar lib | pip install flask | pip install flask |
| Listar libs | pip list | pip list |
| Exportar dependĂȘncias | pip freeze > requirements.txt | pip freeze > requirements.txt |
| Instalar dependĂȘncias | pip install -r requirements.txt | pip install -r requirements.txt |
| Confirmar Python ativo | which python | where python |
| Apagar o venv | rm -rf venv/ | rmdir /s venv |