A Tweet se lit comme suit:
N'utilisez pas easy_install, à moins que vous n'aimiez vous piquer au visage. Utilisez pip.
Pourquoi utiliser pip over easy_install? Le la faute incombe-t-il principalement à PyPI et aux auteurs de paquets ? Si un auteur télécharge un fichier tarball source (par exemple, des fichiers manquants, pas de fichier setup.py) dans PyPI, alors pip et easy_install échoueront. Hormis les différences esthétiques, pourquoi les personnes de Python (comme dans le Tweet ci-dessus) semblent-elles fortement favoriser pip par rapport à easy_install?
(Supposons que nous parlons d'easy_install du paquet Distribute, qui est maintenu par la communauté)
De Ian Bicking's own introduction to pip :
pip a été écrit à l'origine pour améliorer easy_install des manières suivantes
- Tous les packages sont téléchargés avant l'installation. L’installation partiellement terminée ne se produit donc pas.
- On prend soin de présenter une sortie utile sur la console.
- Les raisons des actions sont conservées. Par exemple, si un paquet est en cours d'installation, pip garde une 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 facilite son utilisation par programmation.
- Les paquets ne doivent pas nécessairement être installés en tant qu’archives Egg, ils peuvent être installés à plat (tout en conservant les métadonnées Egg).
- Prise en charge native d'autres systèmes de contrôle de version (Git, Mercurial et Bazaar)
- Désinstallation de packages.
- Simple à définir des ensembles fixes d'exigences et à reproduire de manière fiable un ensemble de packages.
Une autre raison - pour le moment non mentionnée - de privilégier pip est qu’elle est la nouvelle actualité et qu’elle continuera d’être utilisée à l’avenir.
L’infographie ci-dessous - tirée de la section Etat actuel de l’emballage dans le Le guide de l’auto-stoppeur v1. - montre que setuptools/easy_install disparaîtra à l’avenir.
Voici une autre infographie de documentation de distribution montrant que Setuptools et easy_install seront remplacés par le nouveau raccourci — distribution et pip . Alors que pip est toujours le nouveau point chaud, Distribuer a fusionné avec Setuptools en 2013 avec la sortie de Setuptools v0.7 .
Deux raisons, il peut y avoir plus:
pip fournit une commande uninstall
si une installation échoue au milieu, pip vous laissera propre.
EXIGENCES fichiers.
Sérieusement, j'utilise cela quotidiennement avec virtualenv.
TUTORIEL DE GESTION DE DÉPENDANCE RAPIDE, FOLKS
Les fichiers de conditions requises vous permettent de créer un instantané de tous les packages qui ont été installés via pip. En encapsulant ces packages dans un environnement virtuel, vous pouvez faire travailler votre base de code sur un ensemble très spécifique de paquets 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 configurez votre shell pour qu'il l'utilise. (instructions bash/* nix)
virtualenv env
source env/bin/activate
Désormais, tous les scripts python exécutés avec ce shell utiliseront les packages et la configuration de cet environnement. Vous pouvez maintenant installer un package localement dans cet environnement sans avoir à l'installer globalement sur votre ordinateur.
pip install flask
Maintenant, vous pouvez vider les informations sur les paquets installés avec
pip freeze > requirements.txt
Si vous avez coché ce fichier dans le contrôle de version, lorsque quelqu'un d'autre récupère 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 un ennui comme ça, c'est génial.
pip n'installera pas de paquets binaires et n'est pas bien testé sous Windows.
Comme Windows ne vient pas avec un compilateur par défaut pip souvent ne peut pas être utilisé ici. easy_install can installe les packages binaires pour Windows.
UPDATE: setuptools
a absorbé distribute
contrairement à l’inverse, comme certains le pensaient. setuptools
est à jour avec les dernières modifications distutils
et le format de la roue. Par conséquent, easy_install
et pip
sont plus ou moins sur un pied d'égalité maintenant.
Source: http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name
En complément de la réponse de fuzzyman:
pip n'installera pas de paquets binaires et n'est pas bien testé sous Windows.
Comme Windows ne vient pas avec un compilateur par défaut, pip ne peut souvent pas être utilisé ici. easy_install peut installer des packages binaires pour Windows.
Voici un tour sous Windows:
vous pouvez utiliser easy_install <package>
pour installer des paquets binaires afin d'éviter de construire un fichier binaire
vous pouvez utiliser pip uninstall <package>
même si vous avez utilisé easy_install.
Ceci est juste une solution de contournement qui fonctionne pour moi sur Windows. En fait, j'utilise toujours pip si aucun fichier binaire n'est impliqué.
Voir le doku actuel du pip: 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 prise en charge d'installer les fichiers binaires va être wheel
name__! 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
à la place des œufs. Je reviendrai et rapporterai à ce sujet.
à la vôtre - Chris
La transition vers wheel
est presque terminée. La plupart des paquets supportent wheel
name__.
J'ai promis de construire des roues pour PySide
et c'est ce que j'ai fait l'été dernier. Fonctionne très bien!
CONSEIL: Quelques développeurs ont jusqu'à présent échoué à prendre en charge le format de roue, simplement parce qu'ils oublient de remplacer distutils
par setuptools
name__. Il est souvent facile de convertir de tels packages en remplaçant ce mot par setup.py
.
Je viens tout juste de rencontrer un cas particulier dans lequel j'ai dû utiliser easy_install
au lieu de pip
, ou je dois extraire directement les codes sources.
Pour le package GitPython
, la version de pip
est trop ancienne, c'est-à-dire 0.1.7
, tandis que celle de easy_install
est la dernière, qui est 0.3.2.rc1
.
J'utilise Python 2.7.8
. Je ne suis pas sûr du mécanisme sous-jacent de easy_install
et pip
, mais au moins les versions de certains packages peuvent être différentes les unes des autres et parfois easy_install
est celui avec la version la plus récente.
easy_install GitPython