pyenv vs conda: Gerenciando Versões do Python
pyenv instala e alterna entre versões do interpretador Python; conda gerencia ambientes inteiros incluindo o Python mais pacotes binários.
pyenv compila e seleciona versões do Python por projeto, deixando a instalação de pacotes para o pip ou outra ferramenta. conda agrupa seus próprios Pythons e um gerenciador de pacotes multilinguagem, então um único ambiente conda fixa tanto o interpretador quanto as dependências compiladas. pyenv é enxuto e só para Python; conda é mais pesado, mas resolve stacks de dependências nativas em um só lugar.
| pyenv | conda | |
|---|---|---|
| Gerencia | Versões do Python | Versões + pacotes |
| Método de instalação | Compila do código-fonte | Binários pré-construídos |
| Deps não-Python | Não | Sim |
| Footprint | Leve | Mais pesado |
| Melhor para | Versionamento só de Python | Ambientes científicos completos |
No CI
pyenv compila interpretadores do código-fonte, o que é lento em um runner frio a menos que o build seja cacheado; muitos setups de CI usam, em vez disso, o Python fornecido pelo runner ou o setup-python. conda puxa Pythons e pacotes pré-construídos, mas paga um custo de solver. Para uma única versão fixada, o Python fornecido pelo runner costuma ser o mais simples; conda se encaixa em stacks nativos pesados.
Acelere
Faça cache do interpretador compilado (pyenv) ou do package cache (conda) com chave nas suas versões fixadas. Ambos rodam em CI runners; runners gerenciados mais rápidos encurtam os passos de build e solve.
O veredito
Gerenciando apenas versões do Python em máquinas de dev: pyenv (ou setup-python no CI). Precisando de um ambiente completo com dependências nativas, não-Python, fixadas juntas: conda. Muitos times fixam o Python diretamente no CI e reservam o conda para stacks científicos.