Gostaria apenas de evitar o uso de virtualenv
apó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>
virtualenv
tenta 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 virtualenvwrapper
e pipenv
. pyvenv
está obsoleto. pyenv
parece ser usado frequentemente onde virtualenv
é usado, mas eu também ficaria longe disso, já que acho que venv
também faz o que pyenv
foi construído.
venv
cria 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 install
enquanto 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 semsudo
em algum diretório que você já possui, portanto não precisará de sudo
permissõ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 venv
permitir gerenciar vários ambientes python. No entanto, pyenv
você não pode reverter convenientemente as instalações da biblioteca para algum estado inicial e provavelmente precisará de admin
privilé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
.