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)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 - a embalagem
distribute
que incluíaeasy_install
já não se mantém. Suas melhorias sobre {[8] } se fundiram novamente emsetuptools
. Tentar instalardistribute
irá instalarsetuptools
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 umpip
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 emeasy_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.
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
.
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.
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.
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.
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.Por duas razões, pode haver mais:
O Pip fornece um comando
uninstall
Se uma instalação falhar no meio, pip vai deixá-lo em um estado limpo.
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/pythonVocê 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.
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.
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
Para além da resposta do fuzzyman:
Aqui está um truque nas janelas.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.
Você pode usar
easy_install <package>
para instalar pacotes binários para evitar a construção de um binárioPode utilizar
pip uninstall <package>
mesmo que usado easy_install.
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.
Uma actualização rápida:
A transição parawheel
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
.
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