Skip to content
Latchkey

Hatch vs PDM: gerenciadores de projeto Python comparados

Escolha o PDM se você quer um resolver rápido com um lockfile embutido e instalações locais no estilo PEP 582; escolha o Hatch se você quer um build backend padronizado, uma matriz de ambientes e scripting de projeto a partir de uma única ferramenta.

Hatch (da PyPA) e PDM são gerenciadores de projeto Python modernos e baseados em padrões que substituem o fluxo mais antigo de setup.py mais virtualenv mais pip. Eles se sobrepõem bastante, mas enfatizam coisas diferentes: o Hatch se concentra em ambientes reproduzíveis e em seu build backend hatchling, enquanto o PDM se concentra em um resolver de dependências rápido e em um lockfile comitado (pdm.lock). Ambos leem pyproject.toml.

HatchPDM
Configuraçãopyproject.toml ([tool.hatch])pyproject.toml ([tool.pdm])
LockfileSem lock embutido (usa hatch-pip-compile ou externo)pdm.lock embutido
Build backendhatchling (backend standalone popular)pdm-backend
AmbientesAmbientes nomeados e uma matriz de testesVenv único do projeto (.venv no projeto)
Scripts/tarefashatch run + scriptspdm run + scripts
PadrõesPEP 517/518/621PEP 517/518/621, histórico de PEP 582

Onde cada um genuinamente vence

O PDM vence quando você quer um lockfile comitado e multiplataforma e um resolver rápido sem adicionar ferramentas extras; seu fluxo pdm.lock e pdm install é reproduzível de fábrica. O Hatch vence quando você publica pacotes e quer um build backend limpo e amplamente adotado (hatchling) mais uma matriz de ambientes de teste gerenciada por uma única CLI. Muitos projetos usam o hatchling como build backend mesmo quando seu workflow do dia a dia é pip ou uv.

Na CI

O PDM é conveniente na CI porque pdm install restaura um ambiente exato e travado a partir do pdm.lock. Com o Hatch, a reprodutibilidade do lock normalmente vem de fixar versões no pyproject.toml ou de combiná-lo com pip-tools/uv; sua força na CI é executar a mesma matriz hatch run test localmente e no runner.

Ressalvas honestas

Nenhum dos dois é universalmente "melhor". O Hatch deliberadamente deixa o travamento um tanto externo, o que algumas equipes não gostam. O PDM agrega mais (lock, scripts, plugins), mas isso significa mais conceitos específicos do PDM para aprender. A ferramenta uv, em rápida evolução, se sobrepõe a ambos, então avalie-a antes de se comprometer.

O veredito

Para autores de bibliotecas que querem um build backend padrão e uma matriz de ambientes, o Hatch se encaixa bem. Para equipes de aplicações que querem um lockfile embutido e um resolver rápido em uma única ferramenta, o PDM é o padrão mais completo.

Guias relacionados