- Permite alternar facilmente entre várias versões do Python
- Segue a tradição UNIX de ferramentas de propósito único: simples, discretas e que funcionam bem
- Este projeto foi derivado de rbenv e ruby-build e adaptado para Python
O que o pyenv faz
- Permite alterar a versão global do Python por usuário.
- Oferece suporte a versões de Python por projeto.
- Permite sobrescrever a versão do Python usando variáveis de ambiente.
- Pode pesquisar várias versões do comando Python ao mesmo tempo. Útil para testar entre versões do Python com tox.
O que o pyenv não faz...
- Não depende do próprio Python. O pyenv é feito com scripts shell puros.
- Não precisa ser carregado no shell. Em vez disso, usa uma abordagem de shim adicionando um diretório ao
PATH.
- Não gerencia virtualenv. Claro, o usuário pode criar virtualenvs manualmente ou automatizar isso com pyenv-virtualenv.
Como funciona
- O pyenv intercepta comandos Python usando executáveis shim injetados no
PATH, determina a versão do Python especificada pela aplicação e então encaminha o comando para essa instalação do Python.
Entendendo o PATH
- Ao executar comandos como
python ou pip, o sistema operacional procura um executável com esse nome na lista de diretórios da variável de ambiente PATH.
Entendendo os shims
- O pyenv insere um diretório de shims no início do
PATH. Por meio do processo de rehashing, ele mantém shims para todos os comandos Python de todas as versões instaladas do Python.
Entendendo a seleção da versão do Python
- Ao executar um shim, o pyenv lê e usa a versão do Python das seguintes fontes, nesta ordem:
- A variável de ambiente
PYENV_VERSION (se definida).
- O arquivo
.python-version específico da aplicação no diretório atual (se existir).
- O primeiro arquivo
.python-version encontrado ao pesquisar cada diretório pai até chegar à raiz do sistema de arquivos (se existir).
- O arquivo global
$(pyenv root)/version.
Encontrando a instalação do Python fornecida pelo pyenv
- O pyenv encaminha o comando para a instalação do Python correspondente à versão que ele determinou.
- Cada versão do Python é instalada em seu próprio diretório dentro de
$(pyenv root)/versions.
Uso
Instalar versões adicionais do Python
- Use
pyenv install para instalar versões adicionais do Python.
Resolução automática para a versão mais recente
- Todos os subcomandos do Pyenv, exceto
uninstall, resolvem automaticamente prefixos completos para a versão mais recente.
Versões do Python com suporte estendido
- Existem releases do Python aos quais são aplicados patches fornecidos pelo usuário para adicionar suporte em ambientes específicos.
Alternar entre versões do Python
- Para usar um Python instalado pelo Pyenv, execute um dos comandos a seguir:
pyenv shell
pyenv local
pyenv global
Remover versões do Python
- Com o tempo, várias versões do Python se acumulam no diretório
$(pyenv root)/versions.
- Para remover versões antigas do Python, use
pyenv uninstall .
Outras tarefas
- Para ver a lista de todos os subcomandos disponíveis, execute
pyenv commands.
Removendo o pyenv
- É fácil desativar temporariamente o Pyenv ou removê-lo do sistema.
Plugins do Pyenv
- É possível expandir e personalizar os recursos do Pyenv de forma simples, flexível e fácil de manter usando plugins.
Configuração avançada
- Existem variáveis de ambiente que controlam o comportamento do Pyenv.
Desenvolvimento
- O código-fonte do Pyenv é hospedado no GitHub.
- Os testes são executados com Bats.
Opinião do GN⁺
- O pyenv é uma ferramenta muito útil para gerenciar várias versões do Python. É especialmente útil para desenvolvedores que precisam usar versões diferentes do Python em múltiplos projetos.
- Como a ferramenta não depende do próprio Python e é composta por scripts shell puros, é possível instalá-la e gerenciá-la até mesmo em sistemas sem Python instalado.
- O pyenv não gerencia virtualenv diretamente, mas é prático poder automatizar esse gerenciamento com o plugin pyenv-virtualenv.
- Como a instalação e o uso são relativamente simples, até engenheiros de software iniciantes que precisem gerenciar versões do Python podem adotá-lo com facilidade.
- Outra ferramenta com funcionalidades semelhantes ao pyenv é o
conda, amplamente usado especialmente nas áreas de ciência de dados e machine learning. Como o conda oferece gerenciamento de pacotes e de ambientes em conjunto, pode ser recomendado para usuários que precisam desses recursos.
- Ao adotar o pyenv, é preciso ter cuidado se houver várias versões do Python instaladas no sistema, para evitar conflitos de caminho. A vantagem do pyenv é facilitar o gerenciamento de versões, mas uma configuração incorreta pode interferir no caminho padrão do Python no sistema.
7 comentários
É preciso tomar cuidado com o conda: em empresas de certo porte, é pago.
Mesmo que a empresa seja pequena, se o cliente principal for grande, fica complicado fornecer assim.
O próprio conda é gratuito sob BSD, mas é bom verificar bem as licenças do repositório e dos pacotes.
Eu deixo o asdf configurado como principal em https://asdf-vm.com/
E por projeto às vezes configuro com
local, outras vezes uso contêineres...Como têm surgido muitas opções novas para configurar + gerenciar ambientes, acabo não usando muito mesmo.. hahaha
Eu também uso exatamente assim.
Haha, pessoalmente acho que o pyenv ficou com uma cara meio ultrapassada.
Como continuam surgindo coisas como rbenv, pyenv e nodenv, no fim acabou aparecendo até o anyenv. hehe
https://github.com/anyenv/anyenv
Comentários do Hacker News
Aviso sobre o uso do pyenv
O sofrimento dos programadores Python
Ferramentas para manter programas Python estáveis
Apresentação da ferramenta Mise
shimspor padrão.Vantagens do ASDF
Compartilhando experiência com o uso do pyenv
python<version> -m venv /my/virtual/env.Stack pessoal de gerenciamento de Python
Gerenciamento de dependências de runtime com Mise
Compartilhando fluxo de trabalho no macOS
Acho que este é o ponto mais doloroso.