uv vs pip: instalações Python mais rápidas para CI
O uv (da Astral) é um instalador baseado em Rust que é quase um drop-in para o pip, mas normalmente instala muito mais rápido, especialmente em caches de CI frios.
O pip é o instalador Python embutido e universal que todo tutorial pressupõe. O uv é uma ferramenta mais nova em Rust que reimplementa instalações no estilo pip mais um fluxo de projeto/lock, trocando universalidade por velocidade.
| uv | pip | |
|---|---|---|
| Linguagem | Rust | Python |
| Velocidade de instalação | Geralmente muito mais rápido, paralelo + cache global | Baseline |
| Compatibilidade com pip | uv pip install é quase um drop-in | A própria referência |
| Lockfile | uv.lock (modo projeto) ou estilo pip-compile | Nenhum nativo (use pip-tools) |
| Disponibilidade | Passo de instalação extra (binário/action) | Vem com o Python |
Onde o uv ganha
O uv resolve e instala em paralelo e mantém um cache global de wheels descompactados, então instalações repetidas (o caso comum em CI) são drasticamente mais rápidas. uv pip install -r requirements.txt aceita os mesmos arquivos que o pip, então a adoção costuma ter baixo atrito. O uv também funciona como resolvedor (uv pip compile) e gerenciador de projeto com uv.lock.
Onde o pip ainda ganha
O pip vem com toda instalação de Python, então não há nada extra para provisionar e nenhum risco de faltar a ferramenta em plataformas exóticas. Para jobs simples, um script pontual, ou ambientes onde você não pode adicionar um binário, o pip puro é o caminho de menor resistência. O pip também é a referência canônica: se um pacote só documenta o pip, o pip elimina a ambiguidade.
Em CI
De qualquer forma, faça cache pelo hash dos seus requirements fixados ou do lockfile. O uv reduz notavelmente o tempo de instalação fria em árvores de dependências grandes; o pip mais um cache de wheels quente estreita a diferença. Fixe versões independentemente da ferramenta para que os builds sejam reproduzíveis.
O veredito
Escolha o uv quando o tempo de instalação importa e você pode adicionar o binário, o que cobre a maioria dos CIs; escolha o pip para portabilidade máxima, a configuração mais simples possível, ou quando uma ferramenta só documenta o pip. Eles coexistem: muitos times rodam uv pip no CI e o pip puro localmente.