Gostaria apenas de evitar o uso de virtualenvapós o Python3.3 + e, em vez disso, usar a biblioteca padrão fornecida venv. Para criar um novo ambiente virtual, digite:
$ python3 -m venv <MYVENV>
virtualenvtenta copiar o binário Python no diretório bin do ambiente virtual. No entanto, ele não atualiza os links dos arquivos da biblioteca incorporados nesse binário, portanto, se você criar o Python da origem em um diretório que não seja do sistema com nomes de caminho relativos, o binário do Python será interrompido. Como é assim que você cria uma cópia Python distribuível, é uma grande falha. Para inspecionar os links dos arquivos da biblioteca incorporada no OS X, use otool. Por exemplo, de dentro do seu ambiente virtual, digite:
$ otool -L bin/python
python:
@executable_path/../Python (compatibility version 3.4.0, current version 3.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
Consequentemente, eu evitaria virtualenvwrappere pipenv. pyvenvestá obsoleto. pyenvparece ser usado frequentemente onde virtualenvé usado, mas eu também ficaria longe disso, já que acho que venvtambém faz o que pyenvfoi construído.
venvcria ambientes virtuais no shell que são novos e em área restrita , com bibliotecas instaláveis pelo usuário e é seguro para vários python . Novo porque os ambientes virtuais começam apenas com as bibliotecas padrão fornecidas com python, você precisa instalar outras bibliotecas novamente pip installenquanto o ambiente virtual estiver ativo. Em área restrita porque nenhuma dessas novas instalações de biblioteca é visível fora do ambiente virtual, para que você possa excluir todo o ambiente e começar de novo sem se preocupar com o impacto na instalação básica do python. Bibliotecas instaláveis pelo usuário porque a pasta de destino do ambiente virtual é criada semsudoem algum diretório que você já possui, portanto não precisará de sudopermissões para instalar bibliotecas nele. Por fim, é seguro para vários tipos de python , pois quando os ambientes virtuais são ativados, o shell vê apenas a versão em python (3.4, 3.5 etc.) usada para criar esse ambiente virtual.
pyenvé semelhante ao venvpermitir gerenciar vários ambientes python. No entanto, pyenvvocê não pode reverter convenientemente as instalações da biblioteca para algum estado inicial e provavelmente precisará de adminprivilégios em algum momento para atualizar as bibliotecas. Então eu acho que também é melhor usar venv.
Nos últimos anos, eu encontrei muitos problemas nos sistemas de compilação (pacotes emacs, construtores de aplicativos autônomos python, instaladores ...) que acabam por resolver problemas virtualenv. Eu acho que o python será uma plataforma melhor quando eliminarmos essa opção adicional e usarmos apenas venv.