Question Pourquoi utiliser pip sur easy_install? [fermé]


UNE tweet lit:

N'utilisez pas easy_install, sauf si vous   comme vous poignarder dans le visage.   Utilisez pip.

Pourquoi utiliser pip sur easy_install? Ne pas le faute mentir avec PyPI et les auteurs de paquets principalement? Si un auteur télécharge tarball source de la merde (par exemple: fichiers manquants, pas setup.py) à PyPI, puis pip et easy_install échoueront. Autre que des différences cosmétiques, pourquoi les gens Python (comme dans le tweet ci-dessus) semblent fortement favorisez pip sur easy_install?

(Supposons que nous parlons de easy_install du paquet Distribute, qui est géré par la communauté)


883
2017-07-10 18:35


origine


Réponses:


Beaucoup de réponses ici sont périmées pour 2015 (bien que celui initialement accepté de Daniel Roseman n'est pas). Voici l'état actuel des choses:

  • Les paquets binaires sont maintenant distribués comme des roues (.whl fichiers) - pas seulement sur PyPI, mais dans des dépôts de tiers comme Les paquets d'extension de Christoph Gohlke pour Windows. pip peut gérer des roues; easy_install ne peux pas.
  • Environnements virtuels (qui sont intégrés avec 3.4, ou peuvent être ajoutés à 2.6 + / 3.1 + avec virtualenv) sont devenus un outil très important et important (et recommandé les documents officiels) ils comprennent pip hors de la boîte, mais ne fonctionne même pas correctement avec easy_install.
  • le distribute paquet qui inclus easy_install n'est plus maintenu. Ses améliorations sur setuptools a été fusionné dans setuptools. Essayer d'installer distribute va juste installer setuptools au lieu.
  • easy_install lui-même est seulement quasi-maintenu.
  • Tous les cas où pip utilisé pour être inférieur à easy_installL'installation à partir d'une arborescence source non compressée, d'un dépôt DVCS, etc., est révolue depuis longtemps; vous pouvez pip install ., pip install git+https://.
  • pip est livré avec les paquets officiels Python 2.7 et 3.4+ de python.org, et un pip bootstrap est inclus par défaut si vous construisez à partir de la source.
  • Les divers documents incomplets sur l'installation, l'utilisation et la construction de paquets ont été remplacés Guide de l'utilisateur de Python Packaging. La propre documentation de Python sur Installation de modules Python maintenant se reporte à ce guide de l'utilisateur, et appelle explicitement pip comme "le programme d'installation préféré".
  • D'autres nouvelles fonctionnalités ont été ajoutées à pip au cours des années qui ne seront jamais en easy_install. Par exemple, pip facilite le clonage de vos packages de site en créant un fichier de configuration puis en l'installant avec une seule commande de chaque côté. Ou pour convertir votre fichier d'exigences en un rapport local à utiliser pour le développement interne. Etc.

La seule bonne raison que je sache utiliser easy_install en 2015 est le cas particulier de l'utilisation des versions Python préinstallées d'Apple avec OS X 10.5-10.8. Depuis 10,5, Apple a inclus easy_install, mais à partir de 10,10 ils ne comprennent toujours pas pip. Avec 10.9+, vous devriez toujours utiliser get-pip.py, mais pour 10.5-10.8, cela a quelques problèmes, il est donc plus facile de sudo easy_install pip. (En général, easy_install pip c'est une mauvaise idée c'est seulement pour OS X 10.5-10.8 que vous voulez faire ceci.) Aussi, 10.5-10.8 incluent readline de façon que easy_install sait comment kludge mais pip n'a pas, donc vous voulez aussi sudo easy_install readline si vous voulez mettre à jour cela.


260
2018-05-23 03:10



De la part de Ian Bicking introduction au pip:

pip a été écrit à l'origine pour améliorer easy_install de la manière suivante

  • Tous les paquets sont téléchargés avant l'installation. Une installation partiellement terminée ne se produit pas en conséquence.
  • Des précautions sont prises pour présenter une sortie utile sur la console.
  • Les raisons des actions sont conservées. Par exemple, si un paquet est installé, pip garde la trace de la raison pour laquelle ce paquet était requis.
  • Les messages d'erreur devraient être utiles.
  • Le code est relativement concis et cohérent, ce qui le rend plus facile à utiliser par programmation.
  • Les paquets ne doivent pas être installés comme des archives d'oeufs, ils peuvent être installés à plat (tout en gardant les métadonnées de l'oeuf).
  • Prise en charge native des autres systèmes de contrôle de version (Git, Mercurial et Bazaar)
  • Désinstallation des paquets.
  • Simple à définir des ensembles d'exigences fixes et reproduire de manière fiable un ensemble de paquets.

581
2017-07-10 19:32



Une autre raison, encore non mentionnée, de favoriser pépin est parce que c'est la nouvelle hotness et continuera à être utilisé dans le futur.

L'infographie ci-dessous-de la État actuel de l'emballage section dans le Le guide de l'auto-stoppeur sur l'emballage v1.0-indique que setuptools / easy_install disparaîtra dans le futur.

enter image description here

Voici une autre infographie de distribuer la documentation montrant que Setuptools et easy_install sera remplacé par le nouveau hotness-distribuer et pépin. Tandis que pépin est toujours la nouvelle hotness, Distribuer fusionné avec Setuptools en 2013 avec la sortie de Setuptools v0.7.

enter image description here


241
2018-01-26 15:19



Deux raisons, il peut y avoir plus:

  1. pip fournit un uninstall commander

  2. Si une installation échoue au milieu, pip vous laissera dans un état propre.


163
2017-07-10 18:56



Fichiers REQUIREMENTS.

Sérieusement, je l'utilise tous les jours avec virtualenv.


TUTORIEL DE GESTION DE LA DÉPENDANCE RAPIDE, GUYS

Les fichiers d'exigences vous permettent de créer un instantané de tous les paquets qui ont été installés via pip. En encapsulant ces paquets dans un environnement virtuel, vous pouvez faire en sorte que votre base de code fonctionne à partir d'un ensemble de paquets très spécifique et partager cette base de code avec d'autres.

De la documentation de Heroku https://devcenter.heroku.com/articles/python

Vous créez un environnement virtuel et définissez votre shell pour l'utiliser. (instructions bash / * nix)

virtualenv env
source env/bin/activate

Maintenant, tous les scripts python exécutés avec ce shell utiliseront les paquets et la configuration de cet environnement. Vous pouvez maintenant installer un package localement dans cet environnement sans avoir à l'installer globalement sur votre machine.

pip install flask

Maintenant, vous pouvez vider les informations sur les paquets installés avec

pip freeze > requirements.txt

Si vous avez vérifié ce fichier dans le contrôle de version, lorsque quelqu'un d'autre obtient votre code, il peut configurer son propre environnement virtuel et installer toutes les dépendances avec:

pip install -r requirements.txt

Chaque fois que vous pouvez automatiser Tedium comme ceci est génial.


110
2017-07-11 13:28



pip ne va pas installer les paquets binaires et n'est pas bien testé sur Windows.

Comme Windows ne vient pas avec un compilateur par défaut pip souvent ne peut pas être utilisé là-bas. easy_install pouvez installez les paquets binaires pour Windows.


78
2017-07-11 18:05



METTRE À JOUR: setuptools a absorbé distribute par opposition à l'inverse, comme certains le pensaient. setuptools est à jour avec le dernier distutils les changements et le format de la roue. Par conséquent, easy_install et pip sont plus ou moins sur pied d'égalité maintenant.

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


71
2018-02-22 20:22



En plus de la réponse de fuzzyman:

pip ne va pas installer les paquets binaires et n'est pas bien testé sur Windows.

Comme Windows ne vient pas avec un compilateur par défaut, pip ne peut souvent pas être   utilisé là. easy_install peut installer des paquets binaires pour Windows.

Voici un truc sur Windows:

  • vous pouvez utiliser easy_install <package> installer des paquets binaires pour éviter de construire un binaire

  • vous pouvez utiliser pip uninstall <package> même si vous avez utilisé easy_install.

C'est juste une solution qui fonctionne pour moi sur Windows. En fait, j'utilise toujours pip si aucun binaire n'est impliqué.

Voir le pip actuel doku: http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install

Je demanderai sur la liste de diffusion ce qui est prévu pour cela.

Voici la dernière mise à jour:

La nouvelle façon d'installer les binaires sera prise en charge wheel! Ce n'est pas encore dans la norme, mais presque. La version actuelle est toujours un alpha: 1.0.0a1

https://pypi.python.org/pypi/wheel

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

Je vais tester wheel en créant un programme d'installation OS X pour PySide en utilisant wheel au lieu des oeufs. Je reviendrai et ferai un rapport à ce sujet.

à la vôtre - Chris

Une mise à jour rapide:

La transition vers wheel est presque fini. La plupart des paquets supportent wheel.

J'ai promis de construire des roues pour PySideet je l'ai fait l'été dernier. Fonctionne très bien!

ALLUSION: Quelques développeurs ont échoué jusqu'ici à supporter le format roue, simplement parce qu'ils oublient de remplacer distutils par setuptools. Souvent, il est facile de convertir de tels paquets en remplaçant ce seul mot setup.py.


23
2017-11-27 01:39



Juste rencontré un cas particulier que je devais utiliser easy_install au lieu de pip, ou je dois tirer les codes sources directement.

Pour le paquet GitPython, la version en pip est trop vieux, ce qui est 0.1.7, tandis que celui de easy_install est le dernier qui est 0.3.2.rc1.

j'utilise Python 2.7.8. Je ne suis pas sûr du mécanisme de sous-couche de easy_install et pip, mais au moins les versions de certains paquets peuvent être différents les uns des autres, et parfois easy_install est celui avec une version plus récente.

easy_install GitPython

2
2017-09-25 03:22