A Tweet lautet:
Verwenden Sie nicht easy_install, es sei denn, Sie möchten sich selbst ins Gesicht stechen. Verwenden Sie pip.
Warum pip over easy_install verwenden? Liegt nicht das Fehler hauptsächlich bei PyPI und Paketautoren ? Wenn ein Autor einen Mistquellentarball (z. B. fehlende Dateien, keine setup.py) auf PyPI hochlädt, schlagen sowohl pip als auch easy_install fehl. Abgesehen von kosmetischen Unterschieden, warum scheinen Python Leute (wie im obigen Tweet) Pip gegenüber easy_install zu bevorzugen ?
(Nehmen wir an, wir sprechen von easy_install aus dem Distribute-Paket, das von der Community verwaltet wird.)
Viele der Antworten hier sind für 2015 veraltet (obwohl die ursprünglich akzeptierte von Daniel Roseman nicht ist). Hier ist der aktuelle Stand der Dinge:
.whl
-Dateien) verteilt - nicht nur auf PyPI, sondern in Repositorys von Drittanbietern wie Christoph Gohlkes Erweiterungspaketen für Windows . pip
kann mit Rädern umgehen; easy_install
kann nicht.virtualenv
zu 2.6 +/3.1 + hinzugefügt werden können) sind zu einem sehr wichtigen und herausragenden Werkzeug geworden (und empfohlen in den offiziellen Dokumenten ); Sie enthalten pip
, funktionieren aber mit easy_install
nicht richtig.distribute
, das easy_install
enthielt, wird nicht mehr verwaltet. Die Verbesserungen gegenüber setuptools
wurden wieder mit setuptools
zusammengeführt. Beim Versuch, distribute
zu installieren, wird stattdessen nur setuptools
installiert.easy_install
selbst ist nur quasi gepflegt.pip
easy_install
unterlegen war - die Installation von einem entpackten Quellbaum, von einem DVCS-Repository usw. - sind lange vorbei. Sie können pip install .
, pip install git+https://
.pip
wird mit den offiziellen Paketen Python 2.7 und 3.4+ von python.org geliefert, und ein pip
bootstrap ist standardmäßig enthalten, wenn Sie aus dem Quellcode erstellen.pip
ausdrücklich "das bevorzugte Installationsprogramm". .pip
hinzugefügt, die in easy_install
niemals mehr verfügbar sein werden. Mit pip
können Sie beispielsweise Ihre Site-Pakete auf einfache Weise klonen, indem Sie eine Anforderungsdatei erstellen und diese dann mit einem einzigen Befehl auf jeder Seite installieren. Oder Sie konvertieren Ihre Anforderungsdatei in ein lokales Repository, um es für die interne Entwicklung zu verwenden. Und so weiter.Der einzige gute Grund, aus dem ich weiß, dass ich 2015 easy_install
verwende, ist der Sonderfall, dass ich Apples vorinstallierte Python -Versionen mit OS X 10.5-10.8 verwende. Seit 10.5 enthält Apple easy_install
, ab 10.10 jedoch immer noch nicht pip
. Mit 10.9+ sollten Sie immer noch nur get-pip.py
verwenden, aber für 10.5-10.8 hat dies einige Probleme, sodass es einfacher ist, Sudo easy_install pip
zu verwenden. (Im Allgemeinen ist easy_install pip
eine schlechte Idee; Sie möchten dies nur für OS X 10.5-10.8 tun.) Außerdem enthält 10.5-10.8 readline
auf eine Weise, die easy_install
zu täuschen weiß um, aber pip
nicht, also möchten Sie auch Sudo easy_install readline
, wenn Sie das aktualisieren möchten.
Aus Ian Bickings eigenem Einführung in pip :
pip wurde ursprünglich geschrieben, um easy_install folgendermaßen zu verbessern
- Alle Pakete werden vor der Installation heruntergeladen. Eine unvollständige Installation findet daher nicht statt.
- Es wird darauf geachtet, dass nützliche Ausgaben auf der Konsole angezeigt werden.
- Die Gründe für Maßnahmen werden verfolgt. Wenn zum Beispiel ein Paket installiert wird, merkt sich pip, warum dieses Paket benötigt wurde.
- Fehlermeldungen sollten hilfreich sein.
- Der Code ist relativ prägnant und zusammenhängend, was die programmgesteuerte Verwendung erleichtert.
- Pakete müssen nicht als Egg-Archive installiert werden, sondern können einfach installiert werden (unter Beibehaltung der Egg-Metadaten).
- Native Unterstützung für andere Versionskontrollsysteme (Git, Mercurial und Bazaar)
- Deinstallation von Paketen.
- Einfache Definition fester Anforderungssätze und zuverlässige Reproduktion eines Paketsatzes.
Ein weiterer - noch nicht erwähnter - Grund für die Bevorzugung von pip liegt darin, dass es sich um die neue Schärfe handelt, die auch in Zukunft verwendet werden wird.
Die folgende Infografik - aus dem Abschnitt Aktueller Verpackungsstatus im Per Anhalter durch die Verpackung v1. - zeigt, dass setuptools/easy_install in Zukunft verschwinden wird.
Hier ist eine weitere Infografik aus Distribute-Dokumentation , die zeigt, dass Setuptools und easy_install durch die neue Hotness ersetzt werden — Distribute und Pip . Während pip noch die neue Schärfe ist, wurde Distribute mit Setuptools im Jahr 2013 mit der Veröffentlichung von Setuptools v0.7 zusammengeführt .
Zwei Gründe können mehr sein:
pip liefert einen uninstall
Befehl
wenn eine Installation in der Mitte fehlschlägt, bleibt pip in einem sauberen Zustand.
ANFORDERUNGEN Dateien.
Im Ernst, ich benutze dies jeden Tag in Verbindung mit virtualenv.
TUTORIAL ZUM SCHNELLEN ABHÄNGIGKEITSMANAGEMENT, FOLKS
Mit den Anforderungsdateien können Sie einen Snapshot aller Pakete erstellen, die über pip installiert wurden. Indem Sie diese Pakete in eine virtuelle Umgebung einkapseln, können Sie Ihre Codebasis auf eine ganz bestimmte Gruppe von Paketen beschränken und diese Codebasis für andere freigeben.
Aus Herokus Dokumentation https://devcenter.heroku.com/articles/python
Sie erstellen eine virtuelle Umgebung und stellen Ihre Shell so ein, dass sie diese verwendet. (bash/* nix Anweisungen)
virtualenv env
source env/bin/activate
Jetzt verwenden alle python Skripte, die mit dieser Shell ausgeführt werden, die Pakete und die Konfiguration dieser Umgebung. Jetzt können Sie ein Paket lokal in dieser Umgebung installieren, ohne es global auf Ihrem Computer installieren zu müssen.
pip install flask
Jetzt können Sie die Informationen darüber, mit welchen Paketen installiert werden, sichern
pip freeze > requirements.txt
Wenn Sie diese Datei in die Versionskontrolle eingecheckt haben und eine andere Person Ihren Code erhält, kann sie ihre eigene virtuelle Umgebung einrichten und alle Abhängigkeiten installieren mit:
pip install -r requirements.txt
Jedes Mal, wenn Sie Langeweile automatisieren können, ist das fantastisch.
pip installiert keine Binärpakete und ist unter Windows nicht gut getestet.
Da Windows standardmäßig nicht mit einem Compiler ausgeliefert wird, kann dort häufig nicht verwendet werden. easy_install kann Binärpakete für Windows installieren.
UPDATE: setuptools
hat distribute
absorbiert, im Gegensatz zum Gegenteil, wie manche dachten. setuptools
ist mit den neuesten distutils
Änderungen und dem Radformat auf dem neuesten Stand. Daher sind easy_install
und pip
jetzt mehr oder weniger gleichberechtigt.
Quelle: http://pythonhosted.org/setuptools/merge-faq.html#why-setuptoolss-and-not-distribute-or-another-name
Als Ergänzung zu Fuzzymans Antwort:
pip installiert keine Binärpakete und ist unter Windows nicht gut getestet.
Da Windows standardmäßig keinen Compiler enthält, kann Pip dort oft nicht verwendet werden. easy_install kann Binärpakete für Windows installieren.
Hier ist ein Trick für Windows:
sie können easy_install <package>
verwenden, um Binärpakete zu installieren, um das Erstellen einer Binärdatei zu vermeiden
sie können pip uninstall <package>
auch dann verwenden, wenn Sie easy_install verwendet haben.
Dies ist nur eine Problemumgehung, die für mich unter Windows funktioniert. Eigentlich benutze ich immer pip, wenn keine Binärdateien beteiligt sind.
Siehe das aktuelle pip doku: http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install
Ich werde auf der Mailingliste nachfragen, was dafür geplant ist.
Hier ist das neueste Update:
Die neue unterstützte Methode zum Installieren von Binärdateien ist wheel
! Es ist noch nicht im Standard, aber fast. Die aktuelle Version ist noch ein Alpha: 1.0.0a1
https://pypi.python.org/pypi/wheel
http://wheel.readthedocs.org/en/latest/
Ich werde wheel
testen, indem ich ein OS X-Installationsprogramm für PySide
mit wheel
anstelle von Eiern erstelle. Wir werden zurückkommen und darüber berichten.
prost - Chris
Der Übergang zu wheel
ist fast vorbei. Die meisten Pakete unterstützen wheel
.
Ich habe versprochen, Räder für PySide
zu bauen, und das habe ich letzten Sommer getan. Funktioniert super!
TIPP: Einige Entwickler haben das Radformat bisher nicht unterstützt, weil sie vergessen haben, distutils
durch setuptools
zu ersetzen. Oft ist es einfach, solche Pakete zu konvertieren, indem dieses einzelne Wort in setup.py
ersetzt wird.
Gerade ist mir ein Sonderfall begegnet, bei dem ich easy_install
anstelle von pip
verwenden musste, oder ich muss die Quellcodes direkt abrufen.
Für das Paket GitPython
ist die Version in pip
zu alt, was 0.1.7
ist, während die von easy_install
die neueste ist, was 0.3.2.rc1
ist.
Ich benutze Python 2.7.8
. Ich bin mir nicht sicher über den Unterlegungsmechanismus von easy_install
und pip
, aber zumindest die Versionen einiger Pakete können sich voneinander unterscheiden, und manchmal ist easy_install
die mit einer neueren Version .
easy_install GitPython