M/A/Mateus Alves
PT/EN
←Voltar para todos os artigos
·6 min de leitura

Acelerando Ambientes Python e Django com uv: Da Instalação ao Deploy

Como o uv (da Astral) revolucionou o gerenciamento de dependências e ambientes virtuais em Python, substituindo pip, poetry e pyenv com velocidade extrema.

#Python#Django#uv#DevOps#Tooling
Pipeline de Alta Performance com uv no Django
— Pipeline de Alta Performance com uv no Django

Se você trabalha com Python profissionalmente, certamente já sentiu o atrito de esperar minutos para um pip install ou poetry install rodar, especialmente em pipelines de CI/CD ou dentro de containers Docker.

O uv, desenvolvido pela Astral (mesma criadora do Ruff), foi escrito em Rust e funciona como um gerenciador de pacotes e ambientes Python de altíssima velocidade — com ganhos que chegam a ser 10x a 100x mais rápidos que o pip tradicional.

Neste artigo, compartilho como estruturei meus fluxos de trabalho com Django utilizando uv no dia a dia.


1. Comparativo de Performance na Prática

Antes de olhar os comandos, veja o benchmark mensurado em um projeto Django real contendo 48 dependências (incluindo Celery, Django REST Framework, Psycopg e testes com pytest):

Benchmark Real

Tempo de Instalação Limpa de Dependências (Cold Cache)

Ambiente Linux x86_64 com conexão de 500Mbps (menor é melhor)

pip clássico(Sem cache)41.8s
Poetry 1.8(Resolução + Download)29.4s
uv (Astral)(Resolução paralela em Rust)1.4s

A diferença de 41.8 segundos para 1.4 segundos transforma completamente o uso diário em containers locais e nas esteiras de automação.

Diagrama arquitetural do fluxo de resolução de dependências e cache do uv
▲ Fluxo arquitetural: resolução PubGrub paralela em Rust, cache global com hardlinks e zero overhead de ambiente.

2. Inicializando um Projeto Django com uv

Para criar um novo projeto com Python 3.12:

Terminal
# Baixar o interpretador e criar ambiente virtual em segundos
uv venv --python 3.12
# Ativar o ambiente (Linux/Mac)
source .venv/bin/activate
# No Windows:
.venv\Scripts\activate
# Instalar Django e Django REST Framework
uv pip install django djangorestframework psycopg[binary]

3. Otimização de CI/CD e Docker

O maior ganho prático que mensurei foi nas esteiras de integração contínua (GitHub Actions).

Em vez de esperarmos 1 a 2 minutos apenas instalando dependências de teste (pytest, coverage, factory-boy), o comando:

CI Workflow
uv pip sync requirements.txt

completa em menos de 3 segundos no cache do runner.

Exemplo de Dockerfile enxuto com uv

Dockerfile
FROM python:3.12-slim-bookworm
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
WORKDIR /app
# Copia arquivos de dependência
COPY pyproject.toml uv.lock ./
# Instalação com cache montado do Docker
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --frozen --no-dev
COPY . .
CMD ["uv", "run", "gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000"]

Conclusão

Adotar o uv nos meus projetos Django trouxe uma melhoria palpável de produtividade diária: menos tempo de espera, locks confiáveis e deploys mais rápidos.

Se você ainda utiliza pip puro ou sofre com a lentidão do poetry lock, recomendo fortemente testar o uv.