uv e Python moderno: chega de pip + venv manual
⏱ 11 min·⭐ 45 XP
Pré-requisitos (0/1)0%
- ⬜🔄 Python pra dev TS: diferenças mentais críticas(Python para Engenheiros)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Por que uv vence
| Necessidade | Antes: uma ferramenta para cada | Agora | Por que a unificação importa |
|---|---|---|---|
| Versão do interpretador | Gerenciador de versões à parte | Embutido | Some a etapa que todo integrante novo esquecia |
| Ambiente isolado | Módulo da biblioteca padrão | Embutido e automático | Não há mais "esqueci de ativar o ambiente" |
| Instalar dependência | Instalador clássico | Resolvedor paralelo | Instalação em segundos muda o que é viável rodar na esteira |
| Travar versões | Ferramenta separada, formato próprio | Arquivo de trava nativo | Reprodutibilidade deixa de depender de disciplina |
| CLI global isolada | Ferramenta específica | Embutido | Uma forma só de instalar ferramenta, em vez de três convivendo |
NecessidadeVersão do interpretador
Antes: uma ferramenta para cadaGerenciador de versões à parte
AgoraEmbutido
Por que a unificação importaSome a etapa que todo integrante novo esquecia
NecessidadeAmbiente isolado
Antes: uma ferramenta para cadaMódulo da biblioteca padrão
AgoraEmbutido e automático
Por que a unificação importaNão há mais "esqueci de ativar o ambiente"
NecessidadeInstalar dependência
Antes: uma ferramenta para cadaInstalador clássico
AgoraResolvedor paralelo
Por que a unificação importaInstalação em segundos muda o que é viável rodar na esteira
NecessidadeTravar versões
Antes: uma ferramenta para cadaFerramenta separada, formato próprio
AgoraArquivo de trava nativo
Por que a unificação importaReprodutibilidade deixa de depender de disciplina
NecessidadeCLI global isolada
Antes: uma ferramenta para cadaFerramenta específica
AgoraEmbutido
Por que a unificação importaUma forma só de instalar ferramenta, em vez de três convivendo
- Install 10-100x mais rápido (Rust + parallel solver).
- Lock determinístico ().
- Gerencia versões Python sem pyenv.
- uv run — roda script numa venv efêmera isolada.
- uv tool — substitui pipx pra CLIs globais.
Workflow básico
# Criar projeto
uv init meu-app
cd meu-app
# Adicionar deps
uv add fastapi pydantic httpx
uv add --dev pytest ruff mypy
# Instalar tudo
uv sync
# Rodar código dentro da venv
uv run python app.py
uv run pytest
# Atualizar tudo
uv sync --upgrade
# Python version específica
uv python install 3.13
echo "3.13" > .python-versionpyproject.toml exemplo
[project]
name = "meu-app"
version = "0.1.0"
requires-python = ">=3.12"
dependencies = [
"fastapi>=0.115",
"pydantic>=2.10",
"httpx>=0.28",
]
[dependency-groups]
dev = [
"pytest>=8.3",
"ruff>=0.9",
"mypy>=1.13",
]
[tool.ruff]
line-length = 100
target-version = "py312"
[tool.mypy]
strict = true
python_version = "3.12"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"Quiz rápido
Além de instalar pacotes rápido, o que o `uv` absorve que antes exigia ferramentas separadas?
Migrando de requirements.txt / poetry
# De requirements.txt → pyproject.toml + uv
uv add $(cat requirements.txt | tr '\n' ' ')
# De Poetry → uv
# uv consegue ler poetry's pyproject.toml direto em muitos casos; migrator:
pip install poetry-to-uv
poetry-to-uv
# Depois: uv sync e pronto✅
Regra pra time: novos projetos em uv. Legados continuam como estão se funcionam — migrar sem valor é churn.
Perguntas frequentes
❓ O que a nova geração de gerenciadores resolve?
Velocidade e unificação: resolver dependência, criar ambiente, instalar versão do interpretador e rodar ferramenta com um comando só, ordens de magnitude mais rápido. O ganho maior não é o segundo economizado — é ter um só caminho em vez de cinco ferramentas parciais.
❓ Ambiente virtual ainda é necessário?
É, e continua sendo o mecanismo de isolamento — o que mudou é que criar e usar deixou de ser trabalho manual. Instalar dependência de projeto no interpretador do sistema continua sendo o erro que quebra outros programas da máquina.
❓ Arquivo de bloqueio importa em Python?
Importa tanto quanto em qualquer ecossistema: sem ele, dois desenvolvedores instalam versões diferentes e o "funciona na minha máquina" é inevitável. Fixar versão de dependência direta e transitiva é o que torna a construção reproduzível.
Fixando
Quiz rápido
Qual é a diferença entre `uv run` e `uv tool install`?
Quiz rápido
Qual é a orientação do módulo sobre migrar projetos existentes?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…