virtualenv
permite criar uma instalação personalizada do Python, por exemplo, em um subdiretório do seu projeto. Cada um dos seus projetos pode, portanto, ter o seu próprio python
(ou até vários) sob o respectivo virtualenv. É perfeitamente aceitável que alguns / todos os virtualvvs tenham a mesma versão python
(por exemplo, 2.7.16) sem conflito - eles vivem separadamente e não se conhecem. Se você deseja usar qualquer um desses python
s, é necessário activate
(executando um script que modificará temporariamente o seu PATH
para garantir que o bin/
diretório do virtualenv seja o primeiro). A partir desse ponto, chamar python
(ou pip
etc.) chamará a versão do virtualenv até você deactivate
(que restaura a PATH
).
pyenv
opera em uma escala mais ampla do que virtualenv
- mantém um registro das instalações do Python (e pode ser usado para instalar novas) e permite configurar a versão do Python a ser executada ao usar o python
comando. Soa semelhante, mas o uso prático é um pouco diferente. Ele funciona anexando seu python
script shim ao seu PATH
(permanentemente) e depois decidindo qual "real" python
chamar. Você pode até configurar o pyenv para chamar um dos pythons do virtualenv (usando o pyenv-virtualenv
plug - in). As versões Python que você instala usando pyenv
entram em seu $(pyenv root)/versions/
diretório (por padrão, a raiz do pyenv é ~ / .pyenv), portanto, são mais 'globais' que o virtualenv. Normalmente, você não pode duplicar as versões do Python instaladas pyenv
, pelo menos não é a idéia principal.
Para criar um virtualenv com uma versão específica do Python, é necessário ter essa versão em algum lugar do sistema (esteja ela ativada PATH
ou não) e essencialmente cloná-la no seu virtualenv recém-criado. Obviamente, uma maneira de obter uma versão específica é instalá-la via pyenv
. Feito isso, os virtualenvs individuais são livres para divergir, tendo diferentes módulos (ou versões dos mesmos) instalados neles.
Em resumo:
virtualenv
permite criar instalações python locais e independentes, clonando as existentes
pyenv
permite que você instale versões diferentes do python simultaneamente (em todo o sistema ou apenas para o usuário local) e, em seguida, escolha qual a multidão de pythons a serem executados a qualquer momento (incluindo os criados pelo virtualenv ou Anaconda)