UV: Pare de Sofrer com Dependências em Python

UV: Pare de Sofrer com Dependências em Python

3 min de leitura

Se você ainda usa pip + venv + pip-tools (ou Poetry) e sente que seu fluxo em Python ficou pesado demais, está na hora de conhecer o uv.

O uv é uma ferramenta da Astral (a mesma empresa por trás do Ruff) para:

  • gerenciar dependências
  • criar e sincronizar ambientes virtuais
  • travar versões com lockfile
  • executar scripts e comandos com isolamento
  • gerenciar projetos Python com uma experiência moderna

A promessa é simples: ser drasticamente mais rápido sem sacrificar a reprodutibilidade.

Por que o uv chamou tanta atenção?

A maioria das dores no ecossistema Python vem de um mesmo ponto: gerenciamento de dependências lento, confuso e inconsistente entre máquinas.

O uv resolve isso com alguns pilares:

  • Performance muito alta (resolver e instalar pacotes em segundos)
  • Fluxo unificado: uma ferramenta para projeto, ambiente e lockfile
  • Compatibilidade com ecossistema Python existente
  • Experiência de uso direta, com comandos previsíveis

Em outras palavras: menos tempo esperando instalações, mais tempo escrevendo código.

Comparação de velocidade (dados oficiais)

Segundo a documentação oficial do uv, a ferramenta pode ser 10-100x mais rápida que o pip em fluxos compatíveis:

Nos exemplos da própria página inicial, os tempos aparecem em milissegundos para operações comuns de projeto, como resolução e sincronização:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ uv add ruff
Resolved 2 packages in 170ms
Prepared 2 packages in 627ms
Installed 2 packages in 1ms

$ uv lock
Resolved 2 packages in 0.33ms

$ uv sync
Resolved 2 packages in 0.70ms
Checked 1 package in 0.02ms

Fonte: https://docs.astral.sh/uv/#projects

Para benchmarks detalhados (warm/cold install e warm/cold resolution), a equipe do uv publica a metodologia, os caveats e as comparações com outras ferramentas em:

Importante: os resultados variam conforme sistema operacional, filesystem e conjunto de dependências do projeto.

UV Projects na prática

A seção Projects da documentação oficial mostra o fluxo completo:

https://docs.astral.sh/uv/#projects

Com uv, você pode iniciar um projeto e manter tudo consistente desde o primeiro commit.

1. Criar projeto

1
2
uv init meu-projeto
cd meu-projeto

Isso cria a base do projeto Python com metadados e estrutura inicial.

2. Adicionar dependências

1
2
uv add pandas
uv add --dev pytest ruff

Sem malabarismo: as dependências de runtime e desenvolvimento ficam organizadas no projeto.

3. Gerar/sincronizar ambiente

1
uv sync

O uv cria ou atualiza o ambiente para refletir exatamente o estado declarado.

4. Executar comandos no ambiente do projeto

1
2
uv run python -m meu_projeto
uv run pytest

Você não precisa alternar manualmente entre ambientes.

Lockfile e reprodutibilidade

Um dos ganhos mais importantes do uv é o lockfile, que fixa versões para execução consistente entre:

  • sua máquina local
  • ambiente de CI
  • produção

Isso reduz o clássico problema do “funciona no meu computador”.

Na prática, o time inteiro instala as mesmas versões, com menos surpresas em deploy.

UV vs Pip: o que muda no dia a dia?

Comparando com o fluxo tradicional:

  • pip: instala pacotes, mas não gerencia o projeto de ponta a ponta
  • uv: integra dependências + ambiente + execução + lockfile em um fluxo único

Resultado:

  • setup inicial mais rápido
  • onboarding mais simples para novos devs
  • menos scripts auxiliares para manter ambiente em ordem

Quando vale migrar?

Migrar para uv costuma valer muito quando você quer:

  • reduzir tempo de setup de projeto
  • padronizar ambiente em equipe
  • simplificar pipelines de CI
  • diminuir a quantidade de ferramentas no stack

Se você está com projeto novo, é ainda mais fácil: comece com uv desde o dia zero.

Conclusão

O uv não é apenas “um pip mais rápido”. Ele aponta para um fluxo em Python mais moderno: menos fricção operacional, mais previsibilidade e mais velocidade.

Se você quer produtividade real no ciclo de desenvolvimento, vale testar hoje no seu próximo projeto.