conda vs pip: Qual para Ambientes de CI Python?
conda e pip resolvem problemas que se sobrepõem, mas são diferentes - e no CI a diferença aparece no tempo de setup e nas bibliotecas nativas.
O pip instala pacotes Python do PyPI. O conda é um gerenciador de pacotes e ambientes multilinguagem que também instala dependências não-Python (compiladores, CUDA, bibliotecas de sistema).
| pip | conda | |
|---|---|---|
| Escopo | Pacotes Python (PyPI) | Python + bibliotecas nativas / não-Python |
| Gerenciador de ambiente | Não (use venv) | Sim, embutido |
| Tratamento de dependências nativas | Apenas wheels | Forte (pacotes binários) |
| Peso do setup no CI | Leve | Mais pesado (instalador + solver) |
| Uso típico | Código web/app | Data science / ML / científico |
No CI
O conda brilha quando você precisa de dependências nativas difíceis de compilar (stacks NumPy/SciPy, GDAL, toolkits CUDA) tratadas como binários pré-compilados - ele evita compilações from-source frágeis. O custo é um setup de CI mais pesado e um solver historicamente lento (mamba/micromamba mitigam isso). Para apps Python comuns, o pip é mais leve e mais rápido de configurar.
Acelere qualquer um dos dois
Faça cache do diretório de pacotes do conda ou do wheel cache do pip chaveado no seu environment.yml ou lock de requirements. Para o conda, prefira o micromamba no CI para uma instalação menor e mais rápida.
O veredito
Dependências nativas/científicas pesadas: conda (idealmente micromamba). Apps Python simples: pip com uma venv. Combine a ferramenta com o fato de suas dependências serem puramente Python ou nativas.