Por que usar o pip sobre a instalação fácil? [fechado]

atweet lê:

Não utilize easy_ install, a não ser que como apunhalar - se na cara. Usa o pip.

porque usar o pip sobre easy_install? A culpa não é principalmente do PyPI e dos autores de pacotes? Se um autor carregar o tarball de origem de lixo (p. ex.: ficheiros em falta, não setup.py) to PyPI, then both pip and easy_install will fail. Para além das diferenças cosméticas, por que razão as pessoas dos Python (como no tweet acima) parecem fortemente a favor do pip easy_install?

(Vamos supor que estamos falando de easy_install do pacote de distribuição, que é mantido pela comunidade)

Author: KarSho, 2010-07-10

9 answers

Muitas das respostas aqui estão desactualizadas para 2015 (embora A inicialmente aceite por Daniel Roseman não esteja). Eis o estado actual das coisas:

  • Os pacotes binários são agora distribuídos como rodas (.whl-não apenas no PyPI, mas em repositórios de terceiros como Os pacotes de extensão do Christoph Gohlke para o Windows. pip consegue lidar com rodas; easy_install não consegue.
  • ([39]}ambientes virtuais (que vêm incorporados com 3.4, ou podem ser adicionados a 2.6+/3.1+ com virtualenv) tornaram-se uma ferramenta muito importante e proeminente (e recomendada em os documentos oficiais); eles incluem pip fora da caixa, mas nem sequer funcionam adequadamente com easy_install.
  • a embalagem distribute que incluía easy_install já não se mantém. Suas melhorias sobre {[8] } se fundiram novamente em setuptools. Tentar instalar distribute irá instalar setuptools em vez disso.
  • easy_install em si só é quase mantido.
  • todos os casos em que {[1] } costumava ser inferior a easy_install - Instalar a partir de uma árvore fonte não embalada, a partir de um repo DVCS, etc.- já se foram há muito tempo.pip install ., pip install git+https://.
  • pip vem com os pacotes oficiais Python 2.7 e 3.4+ de python.org, e um pip bootstrap é incluído por padrão se você compilar a partir do Código.
  • Os vários bits incompletos de documentação sobre a instalação, utilização e construção dos pacotes foram substituídos pelo Python Packaging User Guide. A própria documentação do Python sobre a instalação do Os módulos Python agora desafiam este guia de utilizador, e explicitamente Chama pip como "o programa de instalação preferido".
  • outros novos recursos foram adicionados a pip ao longo dos anos que nunca estarão em easy_install. Por exemplo, pip torna mais fácil clonar os pacotes do seu site, criando um ficheiro de requisitos e instalando-o com um único comando em cada lado. Ou para converter o seu arquivo de requisitos para um repo local para usar para o desenvolvimento interno. E assim por diante.

O único boa razão pela qual eu sei de usar easy_install em 2015 é o caso especial de usar versões Python pré-instaladas da Apple com OS X 10.5-10.8. Desde 10.5, A Apple incluiu easy_install, mas a partir de 10.10 eles ainda não incluem pip. Com 10.9+, você ainda deve usar get-pip.py, mas para 10.5-10.8, isso tem alguns problemas, por isso é mais fácil de sudo easy_install pip. (Em geral, easy_install pip é uma má ideia; é apenas para OS X 10.5-10.8 que você quer fazer isso.) Também, 10.5-10.8 incluem readline de uma forma que easy_install sabe como kludge por aí, mas pip não o faz, por isso também queres {[[32]} Se quiseres actualizar isso.

 310
Author: abarnert, 2017-05-23 12:03:05
Da própria introdução do Ian Bicking ao pip:

O Pip foi originalmente escrito para melhorar o easy_install das seguintes formas

  • Todos os pacotes são transferidos antes da instalação. A instalação parcialmente completa não ocorre como resultado.
  • tem-se o cuidado de apresentar uma saída útil na consola.
  • as razões das acções são mantidas em linha de conta. Por exemplo, se um pacote está sendo instalado, pip mantém o controle de por que esse pacote foi necessario.
  • as mensagens de erro devem ser úteis.
  • o código é relativamente conciso e coeso, tornando mais fácil a sua utilização programaticamente.
  • As embalagens não têm de ser instaladas como pacotes de ovos, podem ser instaladas sem carga (mantendo os metadados dos ovos).
  • Suporte nativo para outros sistemas de controle de versões (Git, Mercurial e Bazaar)
  • Desinstalação de pacotes.
  • simples para definir conjuntos fixos de requisitos e reproduzir de forma fiável um conjunto de pacote.
 600
Author: Daniel Roseman, 2020-06-20 09:12:55

Outra razão, ainda não mencionada, para favorecer o pip é porque é o novo calor e continuará a ser usado no futuro.

A infografia abaixo-do estado actual da embalagem na secção do Guia do viajante para a embalagem v1.0 - mostra que as setuptools/easy_ install irão desaparecer no futuro.

enter image description here

Aqui está outro infográfico da documentação da distribuição que mostra que as Setuptools e o easy_install será substituído pelo novo hotness-distribuir e pip. Enquanto pip é ainda o novo gostosura, Distribuir mesclado com Setuptools em 2013 com o lançamento de Setuptools v0.7.

enter image description here

 247
Author: Matthew Rankin, 2019-02-05 19:26:36

Por duas razões, pode haver mais:

  1. O Pip fornece um comando uninstall

  2. Se uma instalação falhar no meio, pip vai deixá-lo em um estado limpo.

 171
Author: Ned Batchelder, 2010-07-10 18:56:46

Ficheiros de requisitos.

A sério, uso isto em conjunto com virtualenv todos os dias.

TUTORIAL DE GESTÃO DE DEPENDÊNCIAS RÁPIDAS, PESSOAL

Os ficheiros de requisitos permitem-lhe criar uma imagem de todos os pacotes que foram instalados através do pip. Ao encapsular esses pacotes em um ambiente virtualname, você pode ter a sua base de código trabalhando a partir de um conjunto muito específico de pacotes e compartilhar essa base de código com outros.

Da documentação de Heroku https://devcenter.heroku.com/articles/python

Você cria um ambiente virtual, e configura o seu shell para usá-lo. (instruções bash/*nix)

virtualenv env
source env/bin/activate

Agora todos os programas python executados com esta linha de comandos irão usar os pacotes e configuração deste ambiente. Agora você pode instalar um pacote localmente para este ambiente sem precisar instalá-lo globalmente em sua máquina.

pip install flask

Agora pode enviar a informação acerca dos pacotes que estão instalados com

pip freeze > requirements.txt

Se verificou esse ficheiro no controlo de versões, quando alguém recebe o seu código, pode configurar o seu próprio ambiente virtual e instalar todas as dependências com:

pip install -r requirements.txt
Quando puderes automatizar o tédio assim, é fantástico.
 115
Author: Matthew Schinckel, 2018-08-27 22:01:10

O Pip não instala pacotes binários e não é bem testado no Windows.

Como O Windows não vem com um compilador por omissão, muitas vezes não pode ser usado lá. easy_ install can install pacotes binários para o Windows.

 82
Author: fuzzyman, 2010-07-11 18:05:17

Actualização: {[[0] } absorveu distribute em oposição ao contrário, como alguns pensam. setuptools está actualizado com as últimas alterações distutils e o formato da roda. Assim, easy_install e {[5] } estão mais ou menos em pé de igualdade agora.

Fonte: http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name

 75
Author: user3341691, 2014-02-22 20:28:24

Para além da resposta do fuzzyman:

O Pip não instala pacotes binários e não é bem testado no Windows.

Como O Windows não vem com um compilador por omissão, o pip muitas vezes não pode ser utilizar. easy_ install pode instalar pacotes binários para o Windows.

Aqui está um truque nas janelas.
  • Você pode usar easy_install <package> para instalar pacotes binários para evitar a construção de um binário

  • Pode utilizar pip uninstall <package> mesmo que usado easy_install.

Isto é apenas um trabalho que funciona para mim nas janelas. Na verdade, uso sempre o pip se não houver binários envolvidos.

Ver o pip actual doku: http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install

Vou perguntar na lista de discussão o que está planeado para isso.

Aqui está a última actualização:

A nova forma suportada de instalar binários vai ser {[[2]}! Ele ainda não está no padrão, mas quase. A versão actual ainda é um alfa: 1.0. 0a1

Https://pypi.python.org/pypi/wheel

Http://wheel.readthedocs.org/en/latest/

Vou testar {[[2]} Criando um instalador OS X para PySide Usando wheel em vez de ovos. Vamos voltar e informar sobre isto.

Saúde, Chris.

Uma actualização rápida:

A transição para wheel está quase a acabar. A maioria dos pacotes suporta wheel. Prometi construir rodas para o verão passado. Funciona bem! Sugestão: Alguns desenvolvedores falharam até agora para suportar o formato roda, simplesmente porque eles se esquecem de substituir distutils por setuptools. Muitas vezes, é fácil converter esses pacotes substituindo esta única palavra em setup.py.
 25
Author: Christian Tismer, 2015-01-13 19:02:55

Acabei de conhecer um caso especial que tive de usar easy_install em vez de pip, ou tenho de puxar os códigos fonte directamente.

Para o pacote GitPython, a versão em pip é demasiado antiga, que é 0.1.7, enquanto que a versão de easy_install é a mais recente que é 0.3.2.rc1.

Estou a usar Python 2.7.8. Eu não tenho certeza sobre o mecanismo subjacente de easy_install e pip, mas pelo menos as versões de alguns pacotes podem ser diferentes umas das outras, e às vezes easy_install é o que tem mais recente versao.

easy_install GitPython
 3
Author: Landys, 2014-09-25 03:22:52