Um tweet diz:
Não use easy_install, a menos que você goste de se esfaquear na cara. Use pip.
Por que usar pip sobre easy_install? A falha não está principalmente nos autores de pacotes e PyPI ? Se um autor fizer upload de tarball de código-fonte de porcaria (por exemplo: arquivos ausentes, sem setup.py) para o PyPI, o pip e o easy_install falharão. Além das diferenças cosméticas, por que as pessoas do Python (como no tweet acima) parecem preferir fortemente o pip do que o easy_install?
(Vamos supor que estamos falando de easy_install do pacote Distribute, que é mantido pela comunidade)
python
pip
setuptools
easy-install
pypi
Sridhar Ratnakumar
fonte
fonte
setuptools
não faz parte do Python 3 porquepip
é, e essa é a única parte que os usuários finais precisam. (E os desenvolvedores que desejam distribuir em PyPI pode, obviamentepip install setuptools
, e tudo o mais que pode querer.)Respostas:
Muitas das respostas aqui estão desatualizadas para 2015 (embora a inicialmente aceita por Daniel Roseman não seja). Aqui está o estado atual das coisas:
.whl
arquivos) - não apenas no PyPI, mas em repositórios de terceiros, como o Extension Packages for Windows de Christoph Gohlke .pip
pode lidar com rodas;easy_install
não podes.virtualenv
) tornaram-se uma ferramenta muito importante e proeminente (e recomendada nos documentos oficiais ); eles incluem prontopip
para uso, mas nem funcionam corretamenteeasy_install
.distribute
pacote incluídoeasy_install
não é mais mantido. Suas melhoriassetuptools
foram incorporadas novamentesetuptools
. Tentar instalardistribute
irá apenas instalarsetuptools
.easy_install
em si é apenas quase mantido.pip
costumava ser inferior a - instalaçãoeasy_install
de uma árvore de origem descompactada, de um repositório DVCS etc. - já se foram há muito; você podepip install .
,pip install git+https://
.pip
vem com os pacotes oficiais do Python 2.7 e 3.4+ do python.org, e umpip
bootstrap é incluído por padrão se você criar a partir do código-fonte.pip
como "o programa de instalação preferido".pip
longo dos anos que nunca aparecerãoeasy_install
. Por exemplo,pip
facilita a clonagem dos pacotes de sites criando um arquivo de requisitos e instalando-o com um único comando de cada lado. Ou para converter seu arquivo de requisitos em um repositório local para usar no desenvolvimento interno. E assim por diante.A única boa razão que conheço para usar
easy_install
em 2015 é o caso especial do uso das versões Python pré-instaladas da Apple com o OS X 10.5-10.8. Desde a versão 10.5, a Apple incluiueasy_install
, mas a partir da 10.10 elas ainda não incluempip
. Com 10.9+, você ainda deve usarget-pip.py
, mas para 10.5-10.8, isso tem alguns problemas, por isso é mais fácilsudo easy_install pip
. (Em geral,easy_install pip
é uma péssima idéia; é apenas para o OS X 10.5-10.8 que você deseja fazer isso.) Além disso, o 10.5-10.8 incluireadline
de uma maneira que vocêeasy_install
sabe como se divertir, maspip
não sabe, então você também quersudo easy_install readline
se você quiser atualizar isso.fonte
pip
nesse período.easy_install -U pip
oueasy_install3 -U pip
.easy_install
" Esta não foi a minha experiência, embora eu não tente há um tempo desde que as rodas agora dominam. Mas os binários de Christoph Gohlke costumavam ser distribuídos como ovos executáveis. Convocáeasy_install
-los foi a única maneira de conseguir instalar esses pacotes em um ambiente virtual, e isso nunca me causou azia. De que maneira nãoeasy_install
funciona mais com envs virtuais?Da própria introdução de Ian Bicking ao pip :
fonte
easy_install pip
maissudo apt-get install python-pip
?sudo apt-get
o Ubuntu / Debian irão instalar pacotes Python em/usr/lib/python/dist-packages
enquantosudo pip
ousudo easy_install
irá instalar em/local/lib/python/site-packages
e, infelizmente, os pacotes Debian / Ubuntu muitas vezes têm diferentes nomes que PIP não está familiarizado. A melhor solução IMHO é usar o virtualenv epip
instalar seus pacotes lá.Outra razão - ainda não mencionada - de favorecer o pip é porque é o novo calor e continuará sendo usado no futuro.
O infográfico abaixo - da seção Estado atual da embalagem no Guia do mochileiro das embalagens v1.0 - mostra que o setuptools / easy_install desaparecerá no futuro.
Aqui está outro infográfico da documentação da distribuição, mostrando que o Setuptools e o easy_install serão substituídos pelo novo hotness - distribut e pip . Enquanto pip ainda é o novo interesse, o Distribute foi mesclado com o Setuptools em 2013 com o lançamento do Setuptools v0.7.
fonte
distribute
está se unindo novamentesetuptools
.pip
trabalho.packaging
(distutils2
) não está incluído no Python 3.3 .Duas razões, pode haver mais:
pip fornece um
uninstall
comandose uma instalação falhar no meio, o pip o deixará em um estado limpo.
fonte
Arquivos de REQUISITOS.
Sério, eu uso isso em conjunto com o virtualenv todos os dias.
TUTORIAL DE GERENCIAMENTO RÁPIDO DE DEPENDÊNCIAS, PESSOAS
Os arquivos de requisitos permitem criar uma captura instantânea de todos os pacotes que foram instalados por meio do pip. Ao encapsular esses pacotes em um ambiente virtual, você pode fazer com que sua base de código trabalhe com um conjunto muito específico de pacotes e compartilhe essa base de código com outras pessoas.
Da documentação do Heroku https://devcenter.heroku.com/articles/python
Você cria um ambiente virtual e define seu shell para usá-lo. (instruções bash / * nix)
Agora todos os scripts python executados com esse shell usarão os pacotes e a configuração desse ambiente. Agora você pode instalar um pacote localmente nesse ambiente sem precisar instalá-lo globalmente em sua máquina.
Agora você pode despejar as informações sobre quais pacotes estão instalados com
Se você tiver verificado esse arquivo no controle de versão, quando outra pessoa obtiver seu código, ela poderá configurar seu próprio ambiente virtual e instalar todas as dependências com:
A qualquer momento, você pode automatizar o tédio dessa maneira.
fonte
pipreqs
para obter o arquivo requirements.txt. Ele fornecerá apenas as bibliotecas relacionadas ao projeto em que você está chamando pipreqs, para que o requirements.txt seja baseado no projeto e não no virtualenv.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 padrão, o pip geralmente não pode ser usado lá. O easy_install pode instalar pacotes binários para Windows.
fonte
wheel
formato de distribuição binária torna isso possível. Muitos pacotes de terceiros com módulos de extensão C agora também estão sendo distribuídos, pois as rodas são construídas para várias plataformas e o pip pode instalá-las automaticamente. Veja, por exemplo, pythonwheels.comATUALIZAÇÃO:
setuptools
absorveudistribute
, ao contrário do contrário, como alguns pensavam.setuptools
está atualizado com asdistutils
alterações mais recentes e o formato da roda. Portanto,easy_install
epip
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
fonte
easy_install
ainda é o que tem sido por um longo tempo e o pip melhora tremendamente.easy_install
é apenas uma partesetuptools
e, sem dúvida, uma das piores, e é por isso que o pip pretende substituí-lo.Como complemento à resposta de fuzzyman:
Aqui está um truque no Windows:
você pode usar
easy_install <package>
para instalar pacotes binários para evitar a construção de um bináriovocê pode usar
pip uninstall <package>
mesmo que tenha usado o easy_install.Esta é apenas uma solução alternativa que funciona para mim no Windows. Na verdade, eu sempre uso pip se não houver binários envolvidos.
Consulte o pip doku atual: http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install
Aqui está a atualização mais recente:
A nova maneira suportada de instalar binários será
wheel
! Ainda não está no padrão, mas quase. A versão atual ainda é um alfa: 1.0.0a1https://pypi.python.org/pypi/wheel
http://wheel.readthedocs.org/en/latest/
Vou testar
wheel
criando um instalador do OS X paraPySide
usarwheel
vez de ovos. Vai voltar e relatar sobre isso.Saúde - Chris
Uma atualização rápida:
A transição para
wheel
está quase no fim. A maioria dos pacotes suportawheel
.Prometi construir rodas para
PySide
e fiz isso no verão passado. Funciona bem!DICA: Alguns desenvolvedores falharam até agora para apoiar o formato de roda, simplesmente porque eles se esqueça de substituir
distutils
porsetuptools
. Freqüentemente, é fácil converter esses pacotes substituindo esta única palavra emsetup.py
.fonte
Acabei de conhecer um caso especial que eu tive que usar em
easy_install
vez depip
, ou tenho que extrair os códigos-fonte diretamente.Para o pacote
GitPython
, a versão inpip
é muito antiga0.1.7
, enquanto a versãoeasy_install
é a mais recente0.3.2.rc1
.Estou usando
Python 2.7.8
. Não tenho certeza sobre o mecanismo subjacente deeasy_install
epip
, mas pelo menos as versões de alguns pacotes podem ser diferentes umas das outras e às vezeseasy_install
é a versão mais recente.fonte