// aula · Python · Boas pråticas

Ambiente Virtual —
organizando seus projetos Python


O problema que o ambiente virtual resolve

Imagine essa situação

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.

Analogia — cada projeto Ă© uma cozinha separada

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.

❌ Sem ambiente virtual
đŸ’„Projetos compartilham as mesmas bibliotecas
đŸ’„Atualizar uma lib pode quebrar outro projeto
đŸ’„ImpossĂ­vel ter versĂ”es diferentes da mesma lib
đŸ’„DifĂ­cil saber quais libs o projeto realmente usa
đŸ’„"Funciona na minha mĂĄquina" — mas nĂŁo na do colega
✅ Com ambiente virtual
✅Cada projeto tem seu próprio espaço isolado
✅Atualizar libs de um projeto não afeta os outros
✅VersĂ”es diferentes da mesma lib em projetos diferentes
✅Lista exata de dependĂȘncias fĂĄcil de exportar
✅Qualquer pessoa reproduz o mesmo ambiente

O que Ă© um ambiente virtual?

Uma cĂłpia isolada do Python para o seu projeto

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.

O que tem dentro de um venv?

Ao criar um ambiente virtual, o Python gera uma estrutura de pastas assim:

venv/
├── bin/         â† Linux/Mac
│   ├── python     â† link para o Python do venv
│   ├── pip        â† pip do venv (instala aqui dentro)
│   └── activate   â† script que ativa o ambiente
├── Scripts/     â† Windows (equivalente ao bin/)
├── lib/
│   └── python3.x/
│       └── site-packages/ ← suas libs instaladas ficam aqui
└── pyvenv.cfg   â† configuração do venv

VocĂȘ nunca edita esses arquivos manualmente

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

O que muda quando vocĂȘ ativa o venv?

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.

1
Antes de ativar — Python global O terminal usa o Python instalado no sistema. which python retorna algo como /usr/bin/python3. O pip instala libs no Python global.
2
VocĂȘ roda: 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) $.
3
Agora — Python isolado which python retorna ./venv/bin/python. Qualquer pip install instala dentro de venv/lib/site-packages/. Nada vai para o Python global.
4
VocĂȘ roda: 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".

✅ O venv nĂŁo some quando vocĂȘ desativa

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 que Ă© o pip?

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.

Terminal — comandos essenciais do pip
# 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 que Ă© o PyPI?

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

1
Crie a pasta do projeto e entre nela
Terminal
mkdir meu_projeto
cd meu_projeto
2
Crie o ambiente virtual
O comando abaixo cria uma pasta chamada 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.
Terminal
# 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!
3
Ative o ambiente virtual
O comando Ă© diferente dependendo do sistema operacional e do terminal. ApĂłs ativar, o nome (venv) aparece no inĂ­cio do prompt — esse Ă© o sinal de que estĂĄ ativo.
Ativando — escolha o seu sistema
# 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

⚠ Erro no PowerShell? PolĂ­tica de execução

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

4
Confirme que estĂĄ no ambiente certo
Terminal — verificando
# 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
5
Instale as bibliotecas do projeto
Terminal — com o venv ativo
pip install flask pip install requests pip install sqlalchemy # Tudo vai para venv/lib/site-packages/ — não para o Python global
6
Desative quando terminar
Terminal
deactivate # O (venv) some do prompt — voltou ao Python global

✅ Resumo rápido para usar todo dia

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

Como contar para os outros o que seu projeto precisa?

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

Terminal — com o venv ativo
# 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
requirements.txt — exemplo de conteĂșdo
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

Terminal — em uma máquina nova
# 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.

✅ Atualize o requirements.txt sempre que instalar algo novo

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.

🔒 Com versĂ”es fixas (==)

O pip freeze usa == para fixar a versão exata. É mais seguro — garante que todos usem exatamente o mesmo ambiente.

🔓 Com versĂ”es flexĂ­veis (>=)

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

Por que nĂŁo subir a pasta venv/ para o repositĂłrio?

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.

.gitignore — mínimo para projetos Python
# 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

Nunca suba o arquivo .env para o Git

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.

Como fica a estrutura ideal de um projeto

meu_projeto/
├── venv/               â† NÃO vai pro Git
├── .env                â† NÃO vai pro Git (senhas!)
├── .env.example      â† vai pro Git (valores fictĂ­cios)
├── .gitignore        â† vai pro Git
├── requirements.txt  â† vai pro Git
├── app.py            â† vai pro Git
└── templates/        â† vai pro Git

Fluxo completo — do zero ao projeto funcionando

O ritual que vocĂȘ vai repetir em todo projeto Python

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.

Terminal — fluxo completo de um 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
Terminal — fluxo de quem clonou o projeto
# 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 nĂŁo Ă© a Ășnica opção

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Ăł.

FerramentaO que faz diferenteQuando 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

Por onde começar?

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 fazerLinux / MacWindows
Criar venvpython -m venv venvpython -m venv venv
Ativarsource venv/bin/activatevenv\Scripts\activate
Desativardeactivatedeactivate
Instalar libpip install flaskpip install flask
Listar libspip listpip list
Exportar dependĂȘnciaspip freeze > requirements.txtpip freeze > requirements.txt
Instalar dependĂȘnciaspip install -r requirements.txtpip install -r requirements.txt
Confirmar Python ativowhich pythonwhere python
Apagar o venvrm -rf venv/rmdir /s venv