Ein Tweet lautet:
Verwenden Sie easy_install nicht, es sei denn, Sie stechen sich gerne ins Gesicht. Verwenden Sie pip.
Warum pip over easy_install verwenden? Liegt der Fehler nicht hauptsächlich bei PyPI- und Paketautoren ? Wenn ein Autor Mistquellen-Tarball (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 stark zu bevorzugen?
(Nehmen wir an, wir sprechen von easy_install aus dem Distribute-Paket, das von der Community verwaltet wird.)
python
pip
setuptools
easy-install
pypi
Sridhar Ratnakumar
quelle
quelle
setuptools
ist nicht Teil von Python 3, weil espip
ist, und das ist der einzige Teil, den Endbenutzer benötigen. (Und Entwickler, die auf PyPI verteilen möchten, können natürlichpip install setuptools
und alles andere, was sie wollen.)Antworten:
Viele der Antworten hier sind für 2015 veraltet (obwohl die ursprünglich akzeptierte von Daniel Roseman dies nicht ist). Hier ist der aktuelle Stand der Dinge:
.whl
Dateien) verteilt - nicht nur auf PyPI, sondern auch in Repositorys von Drittanbietern wie Christoph Gohlkes Erweiterungspaketen für Windows .pip
kann mit Rädern umgehen;easy_install
kann nicht.virtualenv
) sind zu einem sehr wichtigen und herausragenden Tool geworden (und in den offiziellen Dokumenten empfohlen ). Sie sindpip
sofort einsatzbereit, funktionieren aber nicht einmal richtigeasy_install
.distribute
Paketeasy_install
wird nicht mehr gepflegt. Die Verbesserungen wurdensetuptools
wieder zusammengeführtsetuptools
. Beim Versuch zu installierendistribute
wirdsetuptools
stattdessen nur installiert .easy_install
selbst wird nur quasi gepflegt.pip
dieeasy_install
Installation von einem entpackten Quellbaum, von einem DVCS-Repo usw. früher unterlegen war, sind längst vorbei. du kannstpip install .
,pip install git+https://
.pip
wird mit den offiziellen Python 2.7- und 3.4+ -Paketen von python.org geliefert, und einpip
Bootstrap ist standardmäßig enthalten, wenn Sie aus dem Quellcode erstellen.pip
als "bevorzugtes Installationsprogramm" bezeichnet.pip
Laufe der Jahre wurden weitere neue Funktionen hinzugefügt, die niemals verfügbar sein werdeneasy_install
. Erleichtert beispielsweisepip
das Klonen Ihrer Site-Pakete, indem Sie eine Anforderungsdatei erstellen und diese dann mit einem einzelnen Befehl auf jeder Seite installieren. Oder um Ihre Anforderungsdatei in ein lokales Repo zu konvertieren, das für die interne Entwicklung verwendet werden soll. Und so weiter.Der einzige gute Grund, den ich für
easy_install
2015 kenne, ist der Sonderfall der Verwendung von Apples vorinstallierten Python-Versionen mit OS X 10.5-10.8. Seit 10.5 hat Apple aufgenommeneasy_install
, aber ab 10.10 sind sie immer noch nicht enthaltenpip
. Mit 10.9+ sollten Sie immer noch nur verwendenget-pip.py
, aber für 10.5-10.8 hat dies einige Probleme, so dass es einfacher istsudo easy_install pip
. (Im Allgemeineneasy_install pip
ist dies eine schlechte Idee. Sie möchten dies nur für OS X 10.5-10.8 tun.) 10.5-10.8 enthält außerdemreadline
eine Methode, dieeasy_install
weiß, wie man herumwirbelt, diespip
aber nicht tut, sodass Sie dies auch möchtensudo easy_install readline
wenn Sie das aktualisieren möchten.quelle
pip
in der Zwischenzeit in Verzug geraten ist.easy_install -U pip
odereasy_install3 -U pip
.easy_install
" Dies war nicht meine Erfahrung, obwohl ich es eine Weile nicht versucht habe, da jetzt die Räder dominieren. Aber Christoph Gohlkes Binärdateien wurden früher als ausführbare Eier verteilt. Der Aufrufeasy_install
an ihnen war die einzige Art , wie ich die Pakete in eine virtuelle Umgebung installiert bekommen konnte, und es gab mir nie Sodbrennen. Inwiefern funktioniert daseasy_install
nicht mehr mit virtuellen Umgebungen?Aus Ian Bickings eigener Einführung in pip :
quelle
easy_install pip
übersudo apt-get install python-pip
?sudo apt-get
Ubuntu / Debian werden Python-Pakete installiert,/usr/lib/python/dist-packages
währendsudo pip
odersudo easy_install
werden in installiert,/local/lib/python/site-packages
und leider haben die Debian / Ubuntu-Pakete oft unterschiedliche Namen, mit denen pip nicht vertraut ist. Die beste Lösung ist meinerpip
Meinung nach, virtualenv zu verwenden und Ihre Pakete dort zu installieren.Ein weiterer - noch nicht erwähnter - Grund für die Bevorzugung von Pip ist, dass es sich um die neue Schärfe handelt, die auch in Zukunft verwendet wird.
Die folgende Infografik - aus dem Abschnitt " Aktueller Verpackungsstatus " im Per Anhalter durch Packaging v1.0 - zeigt, dass setuptools / easy_install in Zukunft nicht mehr verfügbar sein wird.
Hier ist eine weitere Infografik aus der Distribute-Dokumentation, die zeigt, dass Setuptools und easy_install durch die neue Hotness ersetzt werden - Distribute und Pip . Während pip noch die neue Hotness ist, Verteilungs mit fusionierte Setuptool im Jahr 2013 mit der Veröffentlichung von Setuptool v0.7.
quelle
distribute
verschmilzt wieder mitsetuptools
.pip
funktioniert.packaging
(distutils2
) ist in Python 3.3 nicht enthalten .Zwei Gründe, es kann mehr geben:
pip liefert einen
uninstall
BefehlWenn eine Installation in der Mitte fehlschlägt, werden Sie von pip in einem sauberen Zustand zurückgelassen.
quelle
ANFORDERUNGEN Dateien.
Im Ernst, ich benutze dies jeden Tag in Verbindung mit virtualenv.
QUICK DEPENDENCY MANAGEMENT TUTORIAL, FOLKS
Mit 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 von einem ganz bestimmten 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 stellen Ihre Shell so ein, dass sie verwendet wird. (bash / * nix Anweisungen)
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.
Jetzt können Sie die Informationen darüber sichern, mit welchen Paketen installiert wird
Wenn Sie diese Datei in die Versionskontrolle eingecheckt haben und jemand anderes Ihren Code erhält, kann er seine eigene virtuelle Umgebung einrichten und alle Abhängigkeiten installieren mit:
Jedes Mal, wenn Sie Langeweile wie diese automatisieren können, ist das fantastisch.
quelle
pipreqs
, um die Datei require.txt abzurufen. Es werden nur die Bibliotheken angegeben, die sich auf das Projekt beziehen, in dem Sie pipreqs aufrufen, sodass anforderungs.txt auf dem Projekt und nicht auf der virtuellen Umgebung basiert.pip installiert keine Binärpakete und ist unter Windows nicht gut getestet.
Da Windows standardmäßig nicht mit einem Compiler geliefert wird, kann pip dort häufig nicht verwendet werden. easy_install kann Binärpakete für Windows installieren.
quelle
wheel
binäre Verteilungsformat macht dies möglich. Viele Pakete von Drittanbietern mit C-Erweiterungsmodulen werden jetzt auch als Räder für verschiedene Plattformen vertrieben, und Pip kann sie automatisch installieren. Siehe zum Beispiel pythonwheels.comUPDATE:
setuptools
hat absorbiertdistribute
und nicht umgekehrt, wie manche dachten.setuptools
ist mit den neuestendistutils
Änderungen und dem Radformat auf dem neuesten Stand . Dahereasy_install
undpip
sind jetzt mehr oder weniger gleichberechtigt.Quelle: http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name
quelle
easy_install
Es ist immer noch das, was es schon lange ist und Pip verbessert es enorm.easy_install
ist nur ein Teil vonsetuptools
und wohl einer der schlimmsten, weshalb pip versucht, ihn zu ersetzen.Als Ergänzung zu Fuzzymans Antwort:
Hier ist ein Trick unter Windows:
Sie können
easy_install <package>
Binärpakete installieren, um das Erstellen einer Binärdatei zu vermeidenSie können auch verwenden
pip uninstall <package>
, wenn Sie easy_install verwendet haben.Dies ist nur eine Umgehung, 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
Hier ist das neueste Update:
Die neue unterstützte Methode zum Installieren von Binärdateien wird sein
wheel
! Es ist noch nicht im Standard, aber fast. Die aktuelle Version ist immer noch ein Alpha: 1.0.0a1https://pypi.python.org/pypi/wheel
http://wheel.readthedocs.org/en/latest/
Ich werde testen,
wheel
indem ich ein OS X-Installationsprogramm für diePySide
Verwendungwheel
anstelle von Eiern erstelle . Ich werde zurückkommen und darüber berichten.Prost - Chris
Ein schnelles Update:
Der Übergang zu
wheel
ist fast vorbei. Die meisten Pakete unterstützenwheel
.Ich habe versprochen, Räder zu bauen
PySide
, und das habe ich letzten Sommer getan. Funktioniert super!TIPP: Einige Entwickler haben das Radformat bisher nicht unterstützt, einfach weil sie vergessen haben, es
distutils
durch zu ersetzensetuptools
. Oft ist es einfach, solche Pakete zu konvertieren, indem dieses einzelne Wort in ersetzt wirdsetup.py
.quelle
Ich habe gerade einen Sonderfall getroffen, den ich
easy_install
stattdessen verwenden musstepip
, oder ich muss die Quellcodes direkt abrufen.Für das Paket
GitPython
ist die Version inpip
zu alt0.1.7
, während die Version voneasy_install
die neueste ist0.3.2.rc1
.Ich benutze
Python 2.7.8
. Ich bin mir nicht sicher über den Unterlegungsmechanismus voneasy_install
undpip
, aber zumindest die Versionen einiger Pakete können sich voneinander unterscheiden, und manchmaleasy_install
ist es die mit der neueren Version.quelle