Qual é a diferença entre pyenv, virtualenv, anaconda?

141

Eu sou um programador de rubi tentando aprender python. Eu sou bonita família com pyenv, pois é como copiar e colar de rbenv. O Pyenv ajuda a permitir ter mais de uma versão do python em um sistema e também isolar o python sem tocar em parte sensível do sistema.

Suponho que toda instalação python vem com o pacote pip. O que eu ainda não entendo é que existem muitas boas bibliotecas python por aí que sugerem o uso deste virtualenv e anaconda. Eu posso até encontrar o plugin virtualenv para pyenv.

Agora estou ficando confuso com o objetivo desses dois pyenv e virtualenv. pior dentro do pyenv existe um plugin virtualenv.

minhas perguntas são:

  • qual é a diferença entre pyenv e virtualenv?
  • Existe alguma diferença no uso do comando pip dentro de pyenv e virtualenv?
  • o que esse pyenv virutalenv faz?

sua explicação com o exemplo será muito apreciada.

channa ly
fonte

Respostas:

152

Editar: vale a pena mencionar pipaqui também, condae pippossui semelhanças e diferenças relevantes para este tópico .

pip: o Gerenciador de Pacotes Python.

  • Você pode pensar pipcomo o equivalente python do gemcomando ruby
  • pip não está incluído no python por padrão.
  • Você pode instalar o Python usando o homebrew , que instalará o pip automaticamente:brew install python
  • A versão final do OSX não incluía pip por padrão. Para adicionar pip à versão do python do seu sistema mac, você podesudo easy_install pip
  • Você pode encontrar e publicar pacotes python usando o PyPI: The Python Package Index
  • O arquivo requirements.txt é comparável ao ruby gemfile
  • Para criar um arquivo de texto de requisitos, pip freeze > requirements.txt
  • Observe que, neste ponto, temos o python instalado em nosso sistema e criamos um arquivo requirements.txt que descreve todos os pacotes python que foram instalados no seu sistema.

pyenv: Gerenciador de versões do Python

  • No docs : pyenv, você pode 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 extraído do rbenv e ruby-build e modificado para Python.
  • Muitas pessoas hesitam em usar python3 .
  • Se você precisar usar versões diferentes do python, pyenvpermite gerenciar isso facilmente.

virtualenv: Gerenciador de ambiente Python.

  • Da documentação : O problema básico que está sendo tratado é uma das dependências e versões, e indiretamente permissões. Imagine que você tem um aplicativo que precisa da versão 1 do LibFoo, mas outro aplicativo requer a versão 2. Como você pode usar esses dois aplicativos? Se você instalar tudo no /usr/lib/python2.7/site-packages (ou seja qual for o local padrão da sua plataforma), é fácil acabar em uma situação em que você involuntariamente atualiza um aplicativo que não deve ser atualizado.
  • Para criar um virtualenv, basta chamar virtualenv ENV, where ENVis é um diretório para colocar o novo ambiente virtual.
  • Para inicializar virtualenv, você precisa source ENV/bin/activate. Para parar de usar, basta ligar deactivate.
  • Depois de ativar o virtualenv, você pode instalar todos os requisitos de pacote de um espaço de trabalho executando pip install -rno requirements.txtarquivo do projeto .

Anaconda: Gerenciador de Pacotes + Gerenciador de Ambiente + Bibliotecas Científicas Adicionais.

  • Da documentação : O Anaconda 4.2.0 inclui uma instalação fácil do Python (2.7.12, 3.4.5 e / ou 3.5.2) e atualizações de mais de 100 pacotes Python científicos e analíticos pré-criados e testados que incluem NumPy, Pandas , SciPy, Matplotlib e IPython, com mais de 620 pacotes disponíveis através de um simplesconda install <packagename>
  • Como desenvolvedor web, não usei o Anaconda. É ~ 3GB, incluindo todos os pacotes.
  • Existe uma minicondaversão reduzida , que parece ser uma opção mais simples do que usar o pip+ virtualenv, embora eu não tenha experiência em usá-lo pessoalmente.
  • Embora condapermita a instalação de pacotes, esses pacotes são separados dos pacotes do PyPI, portanto, você ainda pode precisar usar o pip adicionalmente, dependendo dos tipos de pacotes que você precisa instalar.

Veja também:

Wade Williams
fonte
3
Este provavelmente poderia usar uma atualização agora, cf stackoverflow.com/a/49084152/14420
Matt Wilkie
9
Isso poderia ser atualizado para incluído no pipenv , pois atualmente parece ser a ferramenta de empacotamento Python oficialmente recomendada no Python.org?
Wavesailor 31/01/19
1
Qual é o problema com a instalação de meras bibliotecas de 3 GB? Você não gostaria de implantar todas essas bibliotecas, mas só porque você tem 3 GB de bibliotecas instaladas não significa que você precisa implantar todas elas. E isso é uma pequena quantidade de espaço no disco rígido atualmente. Atualmente, uso uma instalação anaconda e eles gerenciam meus ambientes com venv, mas eu estava pensando em usar o conda também para meus ambientes virtuais (acho que não vou usar - venv parece um fluxo de trabalho mais suave para mim).
David David
@ David Estou um pouco atrasado, mas você pode expandir o venv parece um fluxo de trabalho mais suave para mim ?
AMC
1

Analogia simples:

  • pyenv ~ rbenv
  • pip ~ bundler
  • ambiente virtual ~ gemset em rvm. Isso pode ser gerenciado diretamente pelo bundler, sem o gemset.

Como uso python3, prefiro o ambiente virtual interno python3 chamado venv . O venv é simples e fácil de usar. Eu recomendo que você leia os documentos oficiais. O documento é breve e conciso.

Em ruby, não precisamos realmente de um ambiente virtual porque o empacotador cuida dele. O ambiente virtual e o empacotador são ótimos, mas têm um conceito diferente, mas tentam resolver o mesmo problema.

channa ly
fonte