uv: o gerenciador Python que todo Data Engineer precisa conhecer
Descubra como o uv, da Astral, substituiu pip, venv e pyenv nos nossos projetos Databricks e Azure — com ganho de 10 a 100× de velocidade.
Se você ainda usa pip install no dia a dia de Data Engineering, você está deixando tempo e confiabilidade na mesa. O uv, criado pela Astral (os mesmos do linter Ruff), é a ferramenta que mudou meu fluxo de trabalho em 2026 — e provavelmente vai mudar o seu também.
O problema clássico dos ambientes Python
Quem trabalha com pipelines Python sabe a dor: instalar um stack típico de Data Engineering (polars, dbt-databricks, azure-storage-blob, pyarrow) com pip leva entre 45 e 60 segundos numa máquina limpa. Em CI/CD, esse tempo se multiplica a cada build.
Além disso, gerenciar versões do Python entre projetos diferentes, manter requirements.txt atualizado e garantir que o ambiente de dev seja idêntico ao de produção são desafios constantes — mesmo usando Poetry ou Conda.
O que é o uv?
O uv é um gerenciador de pacotes e projetos Python escrito em Rust, desenvolvido pela Astral. Em uma única ferramenta, ele substitui:
pip— para instalar pacotesvenv— para criar ambientes virtuaispyenv— para gerenciar versões do Pythonpip-compile/pip-tools— para lock de dependências
A performance é o diferencial principal: 10 a 100× mais rápido que pip, graças ao uso de cache inteligente e paralelismo via Rust.
Instalação
curl -Ls https://astral.sh/uv | sh
Isso é tudo. O uv instala-se como um binário único, sem dependências externas.
Fluxo de trabalho para Data Engineering
Criar um novo projeto
uv init meu_pipeline
cd meu_pipeline
O uv cria automaticamente:
pyproject.toml— configuração do projeto.python-version— versão do Python fixadamain.py— arquivo inicial
Adicionar dependências
uv add polars dbt-databricks azure-storage-blob pyarrow
O uv resolve e instala tudo em paralelo. No primeiro uso, com cache frio, o ganho já é visível. Com cache quente (builds subsequentes), o tempo cai para menos de 1 segundo.
Um arquivo uv.lock é gerado automaticamente com todas as versões exatas — incluindo dependências transitivas. Esse arquivo deve ser versionado no Git para garantir reprodutibilidade total.
Executar scripts
uv run python etl.py
O uv verifica o ambiente virtual automaticamente antes de executar. Se o ambiente não existir ou estiver desatualizado, ele cria/atualiza antes de rodar.
Gerenciar versões do Python
uv python install 3.12
uv python pin 3.12
Sem precisar do pyenv ou de configuração manual de PATH.
Uso em projetos Databricks e Azure
Nos nossos projetos com Databricks e Azure Data Factory, o uv trouxe benefícios específicos:
Ambientes locais de desenvolvimento: Com uv sync, qualquer desenvolvedor replica o ambiente exato do projeto com um único comando — sem README de setup, sem makefile.
CI/CD: No GitHub Actions e Azure DevOps, o uv reduz o tempo de setup do ambiente de 2-3 minutos para menos de 20 segundos.
Scripts ETL isolados: O uv suporta dependências inline em scripts:
# /// script
# dependencies = ["polars", "azure-storage-blob"]
# ///
import polars as pl
# ...
Rodando com uv run etl_script.py, o uv instala as dependências do script automaticamente, sem poluir o ambiente global.
Limitações importantes
O uv não substitui o Conda para projetos que dependem de bibliotecas nativas do sistema (CUDA, cuDNN, ffmpeg). Para pipelines de ML com GPU ou processamento de vídeo, o Conda ainda é necessário para as dependências de sistema.
Para Data Engineering puro (ETL, orquestração, transformação com Polars/DuckDB/dbt), o uv cobre 100% dos casos de uso.
Conclusão
O uv é a evolução natural do ecossistema Python para Data Engineers. Com velocidade superior, lock de dependências automático e uma interface unificada que substitui várias ferramentas, ele elimina uma classe inteira de problemas de ambiente que consomem tempo nos projetos.
Se você trabalha com Python em projetos de dados — especialmente com Databricks, Azure ou pipelines ETL — vale dedicar 15 minutos para testar o uv no seu próximo projeto.
Documentação oficial: docs.astral.sh/uv
Artigos relacionados
Ingestão incremental: pare de recarregar tudo toda noite
Watermarking, change data capture e os padrões que reduzem custo e janela de processamento em pipelines de ETL.
Ler artigoSlowly Changing Dimensions Tipo 2 sem dor de cabeça
O padrão essencial para rastrear histórico em dimensões — explicado com um exemplo concreto e os erros mais comuns.
Ler artigoGostou? Veja os e-books para conteúdo aprofundado.
E-books