pip vs Poetry: Qual Ferramenta de Dependências Python para CI?
No CI, a diferença entre pip e Poetry é na verdade a diferença entre instalações ad-hoc e um lockfile commitado.
Ambos instalam dependências Python, mas o Poetry adiciona um modelo de projeto e um lockfile de verdade, enquanto o pip permanece minimalista e ubíquo.
| pip | Poetry | |
|---|---|---|
| Lockfile | Nenhum nativo (use pip-tools / requirements.txt) | poetry.lock (embutido) |
| Instalações reprodutíveis | Só se você fixar tudo | Sim, a partir do lock |
| Resolvedor de dependências | Básico (backtracking, melhorando) | Resolvedor completo |
| Instalação em CI | pip install -r requirements.txt | poetry install --no-root |
| Chave de cache | Hash do requirements.txt | Hash do poetry.lock |
Para CI especificamente
O Poetry dá a você um build determinístico de imediato: comite o poetry.lock e cada execução instala as mesmas versões. O pip puro com um requirements.txt não fixado deriva com o tempo e causa falhas de CI do tipo "funciona na minha máquina". O pip ainda é a opção mais leve e a escolha certa para scripts simples ou quando uma ferramenta só documenta o pip.
Faça cache da coisa certa
Baseie a chave do seu cache de dependências no lockfile (poetry.lock) ou no requirements.txt fixado, e faça cache dos virtualenvs do Poetry ou do wheel cache do pip. O caching importa mais para o tempo de wall-clock do que qual ferramenta você escolhe.
O veredito
Quer builds reprodutíveis com esforço mínimo: Poetry. Quer a ferramenta mais leve e universal para projetos simples: pip com requirements totalmente fixados. De qualquer forma, comite o lockfile e faça cache dele.