Skip to content
Latchkey

pyenv vs asdf: Qual gerenciador de versões do Python para CI?

O pyenv gerencia apenas versões do Python; o asdf gerencia Python mais todas as outras linguagens a partir de um único arquivo .tool-versions.

O pyenv é um gerenciador de versões do Python focado que instala e troca interpretadores via .python-version. O asdf é um gerenciador multilinguagem que lida com Python (via plugin) junto de Node, Ruby e mais em um único arquivo .tool-versions.

pyenvasdf
Linguagens gerenciadasApenas PythonMuitas (plugins)
Arquivo de pin.python-version.tool-versions
Melhor paraRepos só de PythonRepos poliglotas
Alternativa em CIGeralmente setup-pythonUma ferramenta para todas as linguagens
Build do PythonCompila interpretadoresVia plugin python (pyenv por baixo)

No CI

Para um repo só de Python, o pyenv (ou o setup-python da GitHub lendo o .python-version) é o caminho mais leve. Para repos poliglotas, o asdf fixa Python e todas as outras linguagens em um único arquivo - e seu plugin de Python usa o pyenv por baixo, então você obtém os mesmos interpretadores com pinning unificado. O asdf adiciona setup de plugin, mas elimina a necessidade de vários gerenciadores separados.

Fixe e faça cache

Commite o .python-version ou o .tool-versions para que o CI faça build do interpretador local exato, e faça cache dos interpretadores compilados quando possível (compilar Python é lento). O build roda nos runners de CI; runners gerenciados mais rápidos encurtam as compilações de interpretador a frio.

O veredito

Repo só de Python querendo setup mínimo: pyenv (ou setup-python). Repo poliglota querendo uma ferramenta e um arquivo de pin para cada linguagem: asdf. Commite o arquivo de versão de qualquer forma para um CI reproduzível.

Guias relacionados