Frage Warum pip über easy_install? [geschlossen]


EIN tweeten liest:

Verwenden Sie nicht easy_install, außer Sie   als stechst du dir ins Gesicht.   Benutze Pip.

Warum pip über easy_install? Nicht das Fehler liegen bei PyPI und Paketautoren meist? Wenn ein Autor Mirror-Source-Tarball (zB: fehlende Dateien, kein setup.py) nach PyPI hochlädt, schlagen sowohl pip als auch easy_install fehl. Abgesehen von kosmetischen Unterschieden, warum scheinen Python-Leute (wie im obigen Tweet) zu sein stark favorit pip über easy_install?

(Nehmen wir an, wir sprechen von easy_install aus dem Distribute-Paket, das von der Community verwaltet wird)


883
2017-07-10 18:35


Ursprung


Antworten:


Viele der Antworten hier sind für das Jahr 2015 veraltet (obwohl der anfänglich akzeptierte von Daniel Roseman ist nicht). Hier ist der aktuelle Stand der Dinge:

  • Binäre Pakete werden jetzt als Räder verteilt (.whl Dateien) -nicht nur auf PyPI, sondern in Drittanbieter-Repositories wie Christoph Gohlkes Erweiterungspakete für Windows. pip kann mit Rädern umgehen; easy_install kann nicht.
  • Virtuelle Umgebungen (die mit 3.4 integriert sind oder mit 2.6 + / 3.1 + hinzugefügt werden können) virtualenv) sind zu einem sehr wichtigen und prominenten Werkzeug geworden (und empfohlen in die offiziellen Dokumente); Sie beinhalten pip out of the box, aber funktionieren nicht richtig mit easy_install.
  • Das distribute Paket, das enthalten ist easy_install wird nicht mehr gepflegt. Seine Verbesserungen über setuptools wurde wieder zusammengeführt setuptools. Versuche zu installieren distribute wird nur installiert setuptools stattdessen.
  • easy_install selbst wird nur quasi aufrechterhalten.
  • Alle Fälle wo pip war früher schlechter als easy_install-Installieren von einem entpackten Quelltextbaum, von einem DVCS-Repo usw. - sind lange weg; Sie können pip install ., pip install git+https://.
  • pip kommt mit den offiziellen Python 2.7 und 3.4+ Paketen von python.org, und a pip Bootstrap ist standardmäßig enthalten, wenn Sie aus der Quelle erstellen.
  • Die verschiedenen unvollständigen Teile der Dokumentation zum Installieren, Verwenden und Erstellen von Paketen wurden durch die ersetzt Python-Paket-Benutzerhandbuch. Pythons eigene Dokumentation auf Python-Module installieren verweist nun auf dieses Benutzerhandbuch und ruft explizit auf pip als "das bevorzugte Installationsprogramm".
  • Weitere neue Funktionen wurden hinzugefügt pip im Laufe der Jahre wird das nie sein easy_install. Beispielsweise, pip macht es einfach, Ihre Site-Pakete zu klonen, indem Sie eine Anforderungsdatei erstellen und sie dann mit einem einzigen Befehl auf jeder Seite installieren. Oder Sie konvertieren Ihre Anforderungsdatei in ein lokales Repository, um sie für die interne Entwicklung zu verwenden. Und so weiter.

Der einzige gute Grund, den ich kenne easy_install 2015 ist der Spezialfall, die vorinstallierten Python-Versionen von Apple mit OS X 10.5-10.8 zu verwenden. Seit 10.5 hat Apple aufgenommen easy_install, aber ab 10.10 gehören sie immer noch nicht dazu pip. Mit 10.9+ solltest du es noch benutzen get-pip.py, aber für 10.5-10.8 hat dies einige Probleme, so dass es einfacher ist sudo easy_install pip. (Im Algemeinen, easy_install pip ist eine schlechte Idee; Es ist nur für OS X 10.5-10.8, dass Sie dies tun möchten.) Auch 10.5-10.8 enthalten readline in einer Weise dass easy_install weiß aber wie man kloppt pip nicht, also willst du auch sudo easy_install readline wenn du das aufwerten willst.


260
2018-05-23 03:10



Von Ian Bickings eigenen Einführung in Pip:

pip wurde ursprünglich geschrieben, um easy_install auf folgende Weise zu verbessern

  • Alle Pakete werden vor der Installation heruntergeladen. Eine teilweise abgeschlossene Installation tritt daher nicht auf.
  • Es wird darauf geachtet, dass nützliche Ausgaben auf der Konsole angezeigt werden.
  • Die Gründe für Aktionen werden verfolgt. Wenn beispielsweise ein Paket installiert wird, verfolgt Pip, warum dieses Paket benötigt wurde.
  • Fehlermeldungen sollten nützlich sein.
  • Der Code ist relativ präzise und zusammenhängend, wodurch die programmgesteuerte Verwendung erleichtert wird.
  • Pakete müssen nicht als Ei-Archive installiert werden, sie können flach installiert werden (unter Beibehaltung der Ei-Metadaten).
  • Native Unterstützung für andere Versionskontrollsysteme (Git, Mercurial und Bazaar)
  • Deinstallation von Paketen
  • Einfach zu definieren feste Sätze von Anforderungen und reproduzieren zuverlässig eine Reihe von Paketen.

581
2017-07-10 19:32



Ein anderer - bisher unerwähnt - Grund für die Bevorzugung Pip ist, weil es die neue Schärfe ist und weiterhin in der Zukunft verwendet werden wird.

Die Infografik unten - von der Aktueller Verpackungszustand Abschnitt in der Per Anhalter durch Packaging v1.0-shows, dass setuptools / easy_install in Zukunft weggehen wird.

enter image description here

Hier ist eine weitere Infografik von vertreiben die Dokumentation Zeigt das Setup-Tools und easy_install wird durch die neue Hotness-verteilen und Pip. Während Pip ist immer noch die neue Schärfe, Verteilen fusioniert mit Setup-Tools im Jahr 2013 mit der Veröffentlichung von Setup-Tools v0.7.

enter image description here


241
2018-01-26 15:19



Zwei Gründe, vielleicht mehr:

  1. Pip bietet ein uninstall Befehl

  2. Wenn eine Installation in der Mitte fehlschlägt, wird pip Sie in einem sauberen Zustand verlassen.


163
2017-07-10 18:56



Anforderungen Dateien.

Im Ernst, ich benutze das jeden Tag in Verbindung mit virtualenv.


SCHNELLES ABHÄNGIGKEITSMANAGEMENT TUTORIAL, GUYS

Anforderungsdateien ermöglichen Ihnen das Erstellen eines Snapshots aller Pakete, die über pip installiert wurden. Indem Sie diese Pakete in eine virtuelle Umgebung kapseln, können Sie Ihre Codebasis von einem sehr spezifischen Satz von Paketen abarbeiten lassen und diese Codebasis für andere freigeben.

Aus Herokus Dokumentation https://devcenter.heroku.com/articles/python

Sie erstellen eine virtuelle Umgebung und legen Ihre Shell fest, um sie zu verwenden. (bash / * nix Anweisungen)

virtualenv env
source env/bin/activate

Jetzt werden alle mit dieser Shell ausgeführten Python-Skripts die Pakete und die Konfiguration dieser Umgebung verwenden. 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, ausgeben

pip freeze > requirements.txt

Wenn Sie diese Datei in die Versionskontrolle eingecheckt haben, können sie, wenn eine andere Person Ihren Code erhält, ihre eigene virtuelle Umgebung einrichten und alle Abhängigkeiten installieren mit:

pip install -r requirements.txt

Jedes Mal, wenn Sie so lange automatisieren können, ist das großartig.


110
2017-07-11 13:28



pip wird keine Binärpakete installieren und ist nicht gut unter Windows getestet.

Da Windows standardmäßig nicht mit einem Compiler pip kommt kippen dort benutzt werden. Einfach zu installieren kann Installieren Sie Binärpakete für Windows.


78
2017-07-11 18:05



AKTUALISIEREN: setuptools hat absorbiert distribute im Gegensatz zu andersherum, wie manche dachten. setuptools ist auf dem neuesten Stand distutils Änderungen und das Radformat. Daher, easy_install und pip sind jetzt mehr oder weniger gleichberechtigt.

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


71
2018-02-22 20:22



Als Ergänzung zu Fuzzymans Antwort:

pip wird keine Binärpakete installieren und ist nicht gut unter Windows getestet.

Da Windows standardmäßig nicht mit einem Compiler ausgeliefert wird, kann pip oft nicht sein   dort benutzt. easy_install kann Binärpakete für Windows installieren.

Hier ist ein Trick auf Windows:

  • Sie können verwenden easy_install <package> Binärpakete zu installieren, um den Aufbau einer Binärdatei zu vermeiden

  • Sie können verwenden pip uninstall <package> auch wenn du easy_install benutzt hast.

Dies ist nur ein Workaround, der für mich unter Windows funktioniert. Eigentlich benutze ich immer pip, wenn keine Binärdateien beteiligt sind.

Siehe den aktuellen Pip Doku: http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install

Ich werde auf der Mailingliste fragen, was dafür geplant ist.

Hier ist das neueste Update:

Der neue unterstützte Weg, um Binärdateien zu installieren, wird sein wheel! Es ist noch nicht im Standard, aber fast. Aktuelle Version ist immer noch ein Alpha: 1.0.0a1

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

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

Ich werde testen wheel durch Erstellen eines OS X-Installationsprogramms für PySide verwenden wheel anstelle von Eiern. Werde zurückkommen und darüber berichten.

Prost - Chris

Ein kurzes Update:

Der Übergang zu wheel ist fast vorbei. Die meisten Pakete unterstützen wheel.

Ich habe versprochen, Räder für zu bauen PySideund das habe ich letzten Sommer gemacht. Funktioniert super!

HINWEIS: Einige Entwickler haben es bisher versäumt, das Radformat zu unterstützen, einfach weil sie es vergessen haben ersetzen distutils durch setuptools. Oft ist es einfach, solche Pakete zu konvertieren, indem Sie dieses einzelne Wort ersetzen setup.py.


23
2017-11-27 01:39



Habe gerade einen speziellen Fall getroffen, den ich benutzen musste easy_install Anstatt von pipoder ich muss die Quellcodes direkt ziehen.

Für das Paket GitPython, die Version in pip ist zu alt, was ist 0.1.7, während der eine von easy_install ist das neueste was ist 0.3.2.rc1.

Ich benutze Python 2.7.8. Ich bin mir nicht sicher über den Unterlegmechanismus von easy_install und pip, aber zumindest die Versionen einiger Pakete können sich voneinander und manchmal unterscheiden easy_install ist derjenige mit neuerer Version.

easy_install GitPython

2
2017-09-25 03:22