O Pyenv permite alternar facilmente entre várias versões do Python. É simples, discreto e segue a tradição Unix de ferramentas de uso único que fazem uma coisa bem.
Este projeto foi bifurcado por RBENV e Ruby-Build e modificado para Python.
PATH
.A opção Homebrew da seção MacOS abaixo também funcionaria se você tiver instalado o homebrew.
curl https://pyenv.run | bash
Para mais detalhes, visite nosso outro projeto: https://github.com/pyenv/pyenv-installer
Isso fará com que você vá com a versão mais recente do PYENV e facilite a garra e contribua com as alterações de volta a montante.
$HOME/.pyenv
(mas você pode instalá -lo em outro lugar): git clone https://github.com/pyenv/pyenv.git ~/.pyenv
cd ~/.pyenv && src/configure && make -C src
As opções da seção Linux acima também funcionam, mas o Homebrew é recomendado para uso básico.
Atualize o homebrew e instale Pyenv:
brew update
brew install pyenv
Se você deseja instalar (e atualizar) o mais recente chefe de desenvolvimento do PYENV, em vez da versão mais recente, execute: Run:
brew install pyenv --head
Em seguida, siga o restante das etapas de pós-instalação, começando com o ambiente de configuração do seu shell para Pyenv.
OPCIONAL. Para consertar os scripts de "configuração" de "configuração" do brew doctor
, fora do seu sistema ou diretórios de cerveja doméstica "
Se você vai construir fórmulas homebrew a partir da fonte que link contra Python como Tkinnter ou Numpy (esse é geralmente o caso se você é um desenvolvedor de tal fórmula, ou se tiver uma versão EOL do macOS para a qual garrafas pré -construtivas são não é mais fornecido e você está usando essa fórmula).
Para evitá-los acidentalmente vinculando um Python fornecido pelo PYENV, adicione a seguinte linha à configuração do seu shell interativo:
Bash/Zsh:
alias brew= ' env PATH="${PATH//$(pyenv root)/shims:/}" brew '
Peixe:
alias brew= " env PATH=(string replace (pyenv root)/shims '' "$ PATH " ) brew "
O PYENV não suporta oficialmente o Windows e não funciona no Windows fora do subsistema do Windows para o Linux. Além disso, mesmo lá, os pítons que instalam não são versões nativas do Windows, mas as versões Linux em execução em uma máquina virtual-para que você não obtenha funcionalidade específica do Windows.
Se você estiver no Windows, recomendamos o uso do garfo pyenv-win
do @Kirankotari-que instala versões nativas do Windows Python.
A configuração abaixo deve funcionar para a grande maioria dos usuários para casos de uso comum. Consulte Configuração avançada para obter detalhes e mais opções de configuração.
Os arquivos de inicialização do Bash Bash variam amplamente entre as distribuições, na qual a fonte, que, em que circunstâncias, em que ordem e que configuração adicional eles executam. Como tal, a maneira mais confiável de obter o PYENV em todos os ambientes é anexar comandos de configuração do PYENV a ambos .bashrc
(para shells interativos) e o arquivo de perfil que o bash usaria (para shells de login).
Primeiro, adicione os comandos a ~/.bashrc
executando o seguinte no seu terminal:
echo ' export PYENV_ROOT="$HOME/.pyenv" ' >> ~ /.bashrc
echo ' command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" ' >> ~ /.bashrc
echo ' eval "$(pyenv init -)" ' >> ~ /.bashrc
Então, se você tiver ~/.profile
, ~/.bash_profile
ou ~/.bash_login
, adicione os comandos lá também. Se você não tiver nada disso, crie um ~/.profile
e adicione os comandos lá.
~/.profile
: echo ' export PYENV_ROOT="$HOME/.pyenv" ' >> ~ /.profile
echo ' command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" ' >> ~ /.profile
echo ' eval "$(pyenv init -)" ' >> ~ /.profile
~/.bash_profile
: echo ' export PYENV_ROOT="$HOME/.pyenv" ' >> ~ /.bash_profile
echo ' [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" ' >> ~ /.bash_profile
echo ' eval "$(pyenv init -)" ' >> ~ /.bash_profile
Aviso de bash : existem alguns sistemas em que a variável BASH_ENV
é configurada para apontar para .bashrc
. Em tais sistemas, você quase certamente deve colocar a linha eval "$(pyenv init -)"
em .bash_profile
, e não no .bashrc
. Caso contrário, você pode observar um comportamento estranho, como pyenv
entrando em um loop infinito. Veja #264 para obter detalhes.
echo ' export PYENV_ROOT="$HOME/.pyenv" ' >> ~ /.zshrc
echo ' [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" ' >> ~ /.zshrc
echo ' eval "$(pyenv init -)" ' >> ~ /.zshrc
Se você deseja obter o PYENV em shells de login não interativos, também adicione os comandos ao ~/.zprofile
ou ~/.zlogin
.
Se você tem peixe 3.2.0 ou mais recente, execute isso interativamente:
set -Ux PYENV_ROOT $HOME /.pyenv
fish_add_path $PYENV_ROOT /bin
Caso contrário, execute o trecho abaixo:
set -Ux PYENV_ROOT $HOME /.pyenv
set -U fish_user_paths $PYENV_ROOT /bin $fish_user_paths
Agora, adicione isso a ~/.config/fish/config.fish
:
pyenv init - | source
Para que o PATH
mude para entrar em vigor.
exec " $SHELL "
Instale as dependências de construção do Python antes de tentar instalar uma nova versão do Python.
Agora você pode começar a usar Pyenv.
Se você atualizou do Pyenv versão 2.0.x-2.2.x
A lógica de inicialização e as instruções foram atualizadas para simplificar em 2.3.0. O esquema de configuração anterior e mais complicado para 2.0.0-2.2.5 ainda funciona.
PYENV_ROOT
para apontar para o caminho em que a PYENV armazenará seus dados. $HOME/.pyenv
é o padrão. Se você instalou o PYENV via checkout git, recomendamos defini -lo para o mesmo local em que você o clonou.pyenv
ao seu PATH
, se ainda não estiver láeval "$(pyenv init -)"
para instalar pyenv
em sua concha como uma função de shell, ativar calços e conclusão automáticaeval "$(pyenv init --path)"
em vez de ativar apenas calços, sem integração Para instalar versões python adicionais, use pyenv install
.
Por exemplo, para baixar e instalar o Python 3.10.4, execute:
pyenv install 3.10.4
A execução pyenv install -l
fornece a lista de todas as versões disponíveis.
NOTA: Se você estiver com problemas para instalar uma versão Python, visite a página do Wiki sobre problemas comuns de construção.
Nota: Se você deseja usar o Proxy para download, defina as variáveis de ambiente http_proxy
e https_proxy
.
NOTA: Se você quiser um intérprete mais rápido à custa de tempos de construção mais longos, consulte a criação do desempenho máximo no ReadMe do Python-Build.
Todos os subcomandos Pyenv, exceto uninstall
resolvem automaticamente prefixos completos para a versão mais recente na linha de versão correspondente.
pyenv install
escolhe a versão mais recente conhecida, enquanto outros subcomando escolhem a versão mais recente instalada.
Por exemplo, para instalar e depois alternar para a versão mais recente de 3.10:
pyenv install 3.10
pyenv global 3.10
Você pode executar pyenv latest -k <prefix>
para ver como pyenv install
resolveria um prefixo específico, ou pyenv latest <prefix>
para ver como outros subcompâncias o resolveriam.
Consulte a documentação pyenv latest
para obter detalhes.
Para os seguintes lançamentos do Python, o PYENV aplica patches fornecidos pelo usuário que adicionam suporte a alguns ambientes mais recentes. Embora não mantemos ativamente esses patches, pois os lançamentos existentes nunca mudam, é seguro supor que eles continuarão trabalhando até que haja mudanças incompatíveis adicionais em uma versão posterior desses ambientes.
Para selecionar um Python instalado por Pyenv como a versão para usar, execute um dos seguintes comandos:
pyenv shell <version>
- Selecione apenas para a sessão de shell atualpyenv local <version>
- Selecione automaticamente sempre que estiver no diretório atual (ou em seus subdiretos)pyenv global <version>
- Selecione globalmente para sua conta de usuárioPor exemplo, para selecionar o Python 3.10.4 mencionado acima mencionado como sua versão preferida para usar:
pyenv global 3.10.4
Agora, sempre que você invoca python
, pip
etc., um executável da instalação de 3.10.4 fornecido pelo PYENV será executado em vez do Python do sistema.
O uso do " system
" como um nome de versão redefiniria a seleção para o seu Python fornecido pelo sistema.
Consulte a compreensão dos calços e a compreensão da seleção da versão do Python para obter mais detalhes sobre como a seleção funciona e mais informações sobre seu uso.
À medida que o tempo passa, você acumulará versões Python no diretório $(pyenv root)/versions
.
Para remover as versões antigas do Python, use pyenv uninstall <versions>
.
Como alternativa, você pode simplesmente rm -rf
o diretório da versão que deseja remover. Você pode encontrar o diretório de uma versão Python específica com o comando pyenv prefix
, por exemplo pyenv prefix 2.6.8
. Observe, no entanto, que os plugins podem executar operações adicionais na desinstalação, o que você precisaria fazer manualmente. Por exemplo, Pyenv-virtualenv também remove qualquer ambiente virtual vinculado à versão que está sendo desinstalada.
Execute pyenv commands
para obter uma lista de todos os subcomandos disponíveis. Execute um subcomando com --help
para obter ajuda ou ver a referência dos comandos.
Observe que os plug -ins Pyenv que você instala podem adicionar seus próprios subcomandos.
Se você instalou o PYENV usando o HomeBrew, atualize usando:
brew upgrade pyenv
Para mudar de um lançamento para o mais recente chefe de desenvolvimento do Pyenv, use:
brew uninstall pyenv
brew install pyenv --head
Então você pode atualizá -lo com brew upgrade pyenv
como de costume.
Se você instalou o PYENV com o Pyenv-Installer, provavelmente terá o plug-in Pyenv-UpDate que atualizaria o PYENV e todos os plug-ins instalados:
pyenv update
Se você instalou o PYENV usando o Pyenv-Installer ou o Git Checkout, também pode atualizar sua instalação a qualquer momento usando o Git.
Para atualizar para a mais recente versão de desenvolvimento do Pyenv, use git pull
:
cd $( pyenv root )
git pull
Para atualizar para uma versão específica do PYENV, consulte a tag correspondente:
cd $( pyenv root )
git fetch
git tag
git checkout v0.1.0
A simplicidade do Pyenv facilita a desativada temporariamente ou a desinstalação do sistema.
Para desativar o PYENV gerenciando suas versões Python, basta remover as invocações pyenv init
da configuração de inicialização do shell. Isso removerá o diretório Pyenv Shims do PATH
, e futuras invocações como python
executarão a versão Python do sistema, como era antes do Pyenv.
pyenv
ainda estará acessível na linha de comando, mas seus aplicativos Python não serão afetados pela troca de versão.
Para desinstalar completamente o PYENV, remova todas as linhas de configuração do PYENV da configuração de inicialização do shell e remova seu diretório raiz. Isso excluirá todas as versões Python que foram instaladas sob o $(pyenv root)/versions/
Directory:
rm -rf $( pyenv root )
Se você instalou o PYENV usando um gerenciador de pacotes, como uma etapa final, execute a remoção do pacote PYENV. Por exemplo, para homebrew:
brew uninstall pyenv
O PYENV fornece uma maneira simples de estender e personalizar sua funcionalidade com plug -ins - tão simples quanto criar um diretório de plug -in e soltar um script de shell em uma certa subpatina com qualquer lógica extra que você precisar ser executada em certos momentos.
A idéia principal é que a maioria das coisas que você pode colocar em $PYENV_ROOT/<whatever>
você também pode colocar em $PYENV_ROOT/plugins/your_plugin_name/<whatever>
.
Consulte os plugins no wiki sobre como instalar e usar plugins, bem como um catálogo de alguns plugins existentes úteis para necessidades comuns.
Consulte a criação de plugins no wiki ao escrever seus próprios plugins.
Em um nível alto, o PYENV intercepta comandos Python usando executáveis do SHIM injetados em seu PATH
, determina qual versão Python foi especificada pelo seu aplicativo e passa seus comandos para a instalação correta do Python.
Quando você executa um comando como python
ou pip
, seu shell (Bash / Zshrc / ...) pesquisa através de uma lista de diretórios para encontrar um arquivo executável com esse nome. Esta lista de diretórios vive em uma variável de ambiente chamada PATH
, com cada diretório na lista separada por um cólon:
/usr/local/bin:/usr/bin:/bin
Os diretórios no PATH
são pesquisados da esquerda para a direita; portanto, um executável correspondente em um diretório no início da lista tem precedência sobre outra no final. Neste exemplo, o diretório /usr/local/bin
será pesquisado primeiro, depois /usr/bin
, depois /bin
.
Pyenv funciona inserindo um diretório de calços na frente do seu PATH
:
$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin
Através de um processo chamado Rehanking , a Pyenv mantém calços nesse diretório para corresponder a todos os comando python em todas as versões instaladas do Python - python
, pip
e assim por diante.
Os calços são executáveis leves que simplesmente passam seu comando para Pyenv. Portanto, com o Pyenv instalado, quando você executa, digamos, pip
, seu sistema operacional fará o seguinte:
PATH
para um arquivo executável chamado pip
pip
no início do seu PATH
pip
, que por sua vez passa o comando para PyenvQuando você executa um calço, o Pyenv determina qual versão Python a ser usada lendo -a a partir das seguintes fontes, nesta ordem:
A variável do ambiente PYENV_VERSION
(se especificada). Você pode usar o comando pyenv shell
para definir essa variável de ambiente em sua sessão de shell atual.
O arquivo .python-version
específico do aplicativo no diretório atual (se presente). Você pode modificar o arquivo .python-version
do diretório atual com o comando pyenv local
.
O primeiro arquivo .python-version
encontrado (se houver) pesquisando cada diretório pai, até atingir a raiz do seu sistema de arquivos.
O arquivo global $(pyenv root)/version
. Você pode modificar esse arquivo usando o comando pyenv global
. Se o arquivo de versão global não estiver presente, o Pyenv pressupõe que você queira usar o Python "System" (veja abaixo).
Um nome de versão especial " system
" significa usar qualquer python encontrado no PATH
após a entrada PATH
dos Shims (em outras palavras, o que for executado se os calços do pyenv não estivessem no PATH
). Observe que a PYENV considera essas instalações fora de seu controle e não tenta inspecioná -las ou distingui -las de forma alguma. Então, por exemplo, se você estiver no macOS e possui o Python 3.8.9 e o Python 3.9.12 e o 3.10.2-para o Pyenv, esta é uma versão " system
", e qualquer que seja o primeiro em PATH
sob o nome executável que você especificou será executado.
Nota: Você pode ativar várias versões ao mesmo tempo, incluindo várias versões de Python2 ou Python3 simultaneamente. Isso permite o uso paralelo de Python2 e Python3 e é necessário com ferramentas como tox
. Por exemplo, para instruir o PYENV a usar primeiro o seu sistema Python e Python3 (que são, por exemplo, 2.7.9 e 3.4.2), mas também possuem o Python 3.3.6, 3.2.1 e 2.5.2 disponíveis, você primeiro pyenv install
o falta Versões e defina pyenv global system 3.3.6 3.2.1 2.5.2
. Em seguida, você poderá invocar qualquer uma dessas versões com um nome apropriado pythonX
ou pythonX.Y
. Você também pode especificar várias versões em um arquivo .python-version
manualmente, separado por newlines. Linhas começando com um #
são ignoradas.
pyenv which <command>
exibe qual executável real seria executado quando você invocar <command>
por meio de um calço. Por exemplo, se você tiver 3.3.6, 3.2.1 e 2.5.2 instalados dos quais 3.3.6 e 2.5.2 são selecionados e seu sistema Python é 3.2.5, pyenv which python2.5
deve exibir $(pyenv root)/versions/2.5.2/bin/python2.5
, pyenv which python3
$(pyenv root)/versions/3.3.6/bin/python3
e pyenv which python3.2
-caminho para o seu sistema python devido ao outono (Veja abaixo).
Os Shims também caem em qualquer coisa no PATH
se o executável correspondente não estiver presente em nenhuma das instalações do Python selecionadas. Isso permite que você use quaisquer programas instalados em outras partes do sistema, desde que não sejam sombreados por uma instalação Python selecionada.
Depois que o PYENV determinou qual versão do Python seu aplicativo especificou, ele passa o comando junto à instalação do Python correspondente.
Cada versão Python é instalada em seu próprio diretório sob $(pyenv root)/versions
.
Por exemplo, você pode ter estas versões instaladas:
$(pyenv root)/versions/2.7.8/
$(pyenv root)/versions/3.4.2/
$(pyenv root)/versions/pypy-2.4.0/
No que diz respeito ao PYENV, os nomes de versão são simplesmente diretórios sob $(pyenv root)/versions
.
Pule esta seção, a menos que você saiba o que cada linha do seu perfil de shell está fazendo.
Consulte também a seção Variáveis de ambiente para as variáveis de ambiente que controlam o comportamento do PYENV.
pyenv init
é o único comando que cruza a linha de carregar comandos extras em seu shell. Vindo da RVM, alguns de vocês podem se opor a essa ideia. Aqui está o que eval "$(pyenv init -)"
realmente faz:
Configura o caminho dos calços. É isso que permite que o PYENV intercepte e redirecione invocações de python
, pip
etc. transparentemente. Ele preende $(pyenv root)/shims
para o seu $PATH
. Ele também exclui quaisquer outras instâncias de $(pyenv root)/shims
no PATH
que permitem invocar eval "$(pyenv init -)"
várias vezes sem obter entradas PATH
duplicado.
Instala a conclusão automática. Isso é totalmente opcional, mas bastante útil. O fornecimento $(pyenv root)/completions/pyenv.bash
o configurará. Também há conclusões para ZSH e peixe.
Reconce os calços. De tempos em tempos, você precisará reconstruir seus arquivos Shim. Fazer isso no init garante que tudo esteja atualizado. Você sempre pode executar pyenv rehash
manualmente.
Instala pyenv
no shell atual como uma função de shell. Este bit também é opcional, mas permite que o PYENV e os plugins alterem variáveis no seu shell atual. Isso é necessário para que alguns comandos como pyenv shell
funcionem. O Dispatcher SH não faz nada louco como substituir cd
ou hackear seu prompt de shell, mas se, por algum motivo, você pyenv
de um script real e não uma função de shell, você pode ignorá -lo com segurança.
eval "$(pyenv init --path)"
apenas os itens 1 e 3.
Para ver exatamente o que acontece sob o capô, execute pyenv init -
-ou pyenv init --path
.
eval "$(pyenv init -)"
deve ser executado em qualquer startup de shell interativa (incluindo conchas aninhadas -por exemplo, os invocados dos editores) para que você obtenha funções de conclusão e conveniência.
eval "$(pyenv init --path)"
pode ser usado em vez de eval "$(pyenv init -)"
para ativar apenas calços, sem integração da concha. Ele também pode ser usado para aumentar os calços na frente do PATH
depois que outra lógica antecederá coisas para PATH
que podem sombrear os calços da Pyenv.
~/.profile
de preende os diretórios bin
de estoque após PATH
depois de ter obtido ~/.bashrc
. Isso exige que anexar uma chamada pyenv init
para ~/.profile
e ~/.bashrc
nessas distribuições porque o PIP do sistema coloca executáveis para módulos instalados por um usuário que não é uma raízes nesses bin
por usuários. Se você não quiser usar pyenv init
e os Shims, ainda poderá se beneficiar da capacidade do Pyenv de instalar versões Python para você. Basta executar pyenv install
e você encontrará versões instaladas em $(pyenv root)/versions
.
Você pode executá -los ou simplificar manualmente, conforme necessário, ou pode usar pyenv exec <command>
sempre que quiser <command>
ser afetado pela seleção de versão do PYENV, conforme configurado atualmente.
pyenv exec
funciona preendendo $(pyenv root)/versions/<selected version>/bin
para PATH
no ambiente do <command>
, o mesmo que o que o RVM faz.
Você pode afetar como o PYENV opera com as seguintes variáveis de ambiente:
nome | padrão | descrição |
---|---|---|
PYENV_VERSION | Especifica a versão Python a ser usada. Veja também pyenv shell | |
PYENV_ROOT | ~/.pyenv | Define o diretório sob o qual as versões e calços do Python residem. Veja também pyenv root |
PYENV_DEBUG | Produz informações de depuração. Também como: pyenv --debug <subcommand> | |
PYENV_HOOK_PATH | Veja Wiki | Lista separada por cólon de caminhos pesquisados por ganchos de pyenv. |
PYENV_DIR | $PWD | Diretório para começar a pesquisar por arquivos .python-version . |
Consulte também variáveis de ambiente especial no Readme para variáveis de ambiente do Python-Build que podem ser usadas para personalizar a compilação.
O código -fonte Pyenv está hospedado no GitHub. É limpo, modular e fácil de entender, mesmo que você não seja um hacker de concha.
Os testes são executados usando morcegos:
bats test
bats/test/<file>.bats
Sinta -se à vontade para enviar solicitações de puxar e arquivar bugs no rastreador de problemas.
Consulte Contribuindo.md para obter mais detalhes sobre o envio de alterações.
Veja Changelog.md.
A licença do MIT