PDM vs uv: ferramentas de projeto Python baseadas em padrões
O PDM é um gerenciador de projeto Python orientado a padrões; o uv é o novato mais rápido em Rust. Ambos usam pyproject.toml e produzem lockfiles.
O PDM enfatiza a adesão às PEPs de empacotamento do Python e ofereceu suporte inicial ao PEP 582 (__pypackages__). O uv foca em velocidade bruta e um toolchain unificado. A escolha muitas vezes se resume a pureza de padrões versus velocidade de pipeline.
| PDM | uv | |
|---|---|---|
| Linguagem | Python | Rust |
| Configuração | pyproject.toml | pyproject.toml |
| Lockfile | pdm.lock | uv.lock |
| PEP 582 (__pypackages__) | Suportado | Não é o foco |
| Velocidade de instalação/resolução | Boa | Muito rápida |
Onde o PDM ganha
O PDM acompanha de perto os padrões de empacotamento do Python e suporta diretórios de pacotes locais no estilo PEP 582, que alguns times preferem a virtualenvs. Se você valoriza o alinhamento com padrões e uma ferramenta nativa em Python que pode estender, o PDM é uma escolha forte e madura.
Onde o uv ganha
O uv geralmente é mais rápido na resolução e instalação, e agrupa gerenciamento de versões do Python e execução em um único binário. Para CI onde o tempo de instalação é um custo recorrente, o uv normalmente economiza mais tempo de relógio de parede.
Em CI
Ambos são determinísticos quando você faz commit do lockfile e faz cache pelo seu hash. Decida primeiro o encaixe de padrões/recursos (por exemplo PEP 582), depois a velocidade: para a maioria dos pipelines o uv é mais rápido, para times focados em padrões o PDM é atraente.
O veredito
Escolha o PDM se a adesão a padrões ou os fluxos com PEP 582 importam para você; escolha o uv quando a velocidade de instalação e um único toolchain rápido vencem. Ambos são reproduzíveis e baseados em pyproject, então qualquer um é defensável.