pip vs uv: installs de Python mais rápidos no CI?
O uv (da Astral) reimplementa o workflow do pip em Rust, e no CI a diferença de velocidade de install é difícil de ignorar.
O pip é o instalador padrão do Python que vem com o Python. O uv é uma ferramenta baseada em Rust que oferece um instalador rápido e compatível com o pip, além de gerenciamento de projeto, lockfile e versão do Python.
| pip | uv | |
|---|---|---|
| Implementação | Python | Rust |
| Velocidade de install | Baseline | Muito mais rápido (frequentemente 10x+) |
| Resolver | Backtracking | Resolver rápido |
| Lockfile | Nenhum nativo (pip-tools) | uv.lock (modo projeto) |
| Gerenciamento de versão do Python | Não | Sim (pode instalar Pythons) |
No CI
O uv instala e resolve dependências muito mais rápido que o pip, encurtando a parte mais lenta de muitos pipelines de Python, e pode instalar o próprio interpretador Python para remover uma etapa de setup. O uv também oferece uma interface pip drop-in (uv pip install) para você adotá-lo por velocidade sem mudar o layout do seu projeto. O pip continua sendo o padrão universal que toda ferramenta documenta.
Faça cache de qualquer forma
Faça cache do cache de wheel/download chaveado no lock de requirements. Ambos rodam em runners de CI padrão; se os installs dominam o tempo do seu job, o uv mais runners gerenciados mais rápidos é a alavanca maior.
O veredito
Quer os installs mais rápidos e gerenciamento opcional do Python: uv (sua interface pip facilita a adoção). Quer o padrão universal e sem dependências: pip. Teste a resolução se você tiver constraints complexas antes de trocar.