Verfügt Python über ein Paket- / Modulverwaltungssystem, ähnlich wie Ruby über Rubygems verfügt, wo Sie dies tun können gem install packagename
?
Bei der Installation von Python-Modulen werden nur Verweise auf angezeigt. Dazupython setup.py install
müssen Sie jedoch zuerst das Paket suchen.
Antworten:
Jüngste Fortschritte
März 2014 : Gute Nachrichten! Python 3.4 wird mit Pip ausgeliefert. Pip ist seit langem Pythons De-facto-Standard-Paketmanager. Sie können ein Paket wie folgt installieren :
Wahey! Dies ist die beste Funktion aller Python-Versionen. Es macht den Bibliotheksreichtum der Community für alle zugänglich. Neulinge sind aufgrund der unerschwinglichen Schwierigkeit der Einrichtung nicht länger von der Verwendung von Community-Bibliotheken ausgeschlossen.
Es gibt jedoch noch eine Reihe herausragender Frustrationen bei der Python-Verpackungserfahrung. Kumuliert machen sie Python für Neulinge sehr unwillkommen. Auch die lange Geschichte der Vernachlässigung (dh 14 Jahre lang kein Versand mit einem Paketmanager von Python 2.0 auf Python 3.3) hat der Community Schaden zugefügt. Ich beschreibe beide unten.
Hervorragende Frustrationen
Es ist wichtig zu verstehen, dass erfahrene Benutzer zwar in der Lage sind, diese Frustrationen zu umgehen, sie jedoch erhebliche Hindernisse für Python-Neulinge darstellen. Tatsächlich werden die Schwierigkeit und die allgemeine Unfreundlichkeit der Benutzer wahrscheinlich viele von ihnen abschrecken.
Die PyPI-Website ist nicht hilfreich
Jede Sprache mit einem Paketmanager verfügt über ein offizielles (oder quasi offizielles) Repository, über das die Community Pakete herunterladen und veröffentlichen kann. Python hat den Python Package Index PyPI. https://pypi.python.org/pypi
Vergleichen wir die Seiten mit denen von RubyGems und Npm (dem Node-Paketmanager).
rails
express
simplejson
Sie sehen, dass die Seiten RubyGems und Npm mit einer einzeiligen Beschreibung des Pakets beginnen und anschließend ausführliche Anweisungen zur Installation des Pakets erhalten.
In der Zwischenzeit wehe jedem unglücklichen Python-Benutzer, der naiv zu PyPI navigiert. Unter https://pypi.python.org/pypi/simplejson/ finden sie keine solchen hilfreichen Anweisungen. Es gibt jedoch einen großen grünen "Download" -Link. Es ist nicht unvernünftig, ihm zu folgen. Aha, sie klicken! Ihr Browser lädt eine
.tar.gz
Datei herunter . Viele Windows-Benutzer können es nicht einmal öffnen, aber wenn sie durchhalten, können sie es schließlich extrahieren, dann ausführensetup.py
und schließlich mithilfe von Googlesetup.py install
. Einige werden aufgeben und das Rad neu erfinden.Das alles ist natürlich falsch. Der einfachste Weg, ein Paket zu installieren, ist ein Pip-Befehl. Aber PyPI erwähnte Pip nicht einmal. Stattdessen führte es sie auf einen archaischen und mühsamen Weg.
Fehler: vcvarsall.bat konnte nicht gefunden werden
Numpy ist eine der beliebtesten Bibliotheken von Python. Versuchen Sie es mit Pip zu installieren, Sie erhalten diese kryptische Fehlermeldung:
Der Versuch, dies zu beheben, ist eine der häufigsten Fragen zum Stapelüberlauf : " Fehler: vcvarsall.bat konnte nicht gefunden werden "
Nur wenige Menschen haben Erfolg.
Zum Vergleich druckt Ruby in derselben Situation diese Nachricht, in der erklärt wird, was los ist und wie es behoben werden kann:
Das Veröffentlichen von Paketen ist schwierig
Ruby und Nodejs werden mit den Paketmanagern Gem (seit 2007) und Npm (seit 2011) ausgeliefert und haben die gemeinsame Nutzung von Communitys rund um GitHub gefördert. Npm macht das Veröffentlichen von Paketen so einfach wie das Installieren. Es verfügt bereits über 64.000 Pakete . RubyGems listet 72.000 Pakete auf . Der ehrwürdige Python- Paketindex listet nur 41 KB auf .
Geschichte
Python flog unter dem Motto " Batterien inklusive " und wurde bis 2014 ohne Paketmanager ausgeliefert.
Bis Pip war der De-facto-Standard ein Befehl
easy_install
. Es war absolut unzureichend. Das war kein Befehl zum Deinstallieren von Paketen.Pip war eine massive Verbesserung. Es hatte die meisten Eigenschaften von Ruby's Gem. Leider war Pip - bis vor kurzem - ironischerweise schwer zu installieren. Tatsächlich bleibt das Problem eine der wichtigsten Python-Fragen zum Stapelüberlauf: " Wie installiere ich pip unter Windows? "
quelle
gem install X
scheint einfach auf allen Plattformen zu funktionieren. Wie haben sie das für Edelsteine geschafft, die unter Windows eine C-Code-Kompilierung erfordern?Der Python Package Index (PyPI) scheint Standard zu sein:
pip install MyProject
pip install --upgrade MyProject
pip install MyProject==1.0
Sie können den Paketmanager wie folgt installieren:
Verweise:
quelle
Und nur um einen Kontrast zu schaffen, gibt es auch Pip .
quelle
Als Ruby- und Perl-Entwickler und lernender Python-Typ habe ich nicht festgestellt, dass easy_install oder pip RubyGems oder CPAN entsprechen.
Ich neige dazu, auf meinen Entwicklungssystemen die neuesten Versionen von Modulen auszuführen, während die Entwickler sie aktualisieren, und meine Produktionssysteme auf festgelegten Versionen einzufrieren. Sowohl RubyGems als auch CPAN erleichtern das Auffinden von Modulen, indem sie die verfügbaren Module auflisten und sie dann einzeln oder auf Wunsch einzeln oder in großen Mengen installieren und später aktualisieren.
easy_install und pip machen es einfach, ein Modul zu installieren, sobald ich es über eine Browsersuche gefunden oder auf andere Weise erfahren habe, aber sie sagen mir nicht, was verfügbar ist. Ich kann das zu aktualisierende Modul explizit benennen, aber die Apps sagen mir nicht, was aktualisiert wurde, und sie aktualisieren auch nicht alles in großen Mengen, wenn ich möchte.
Die grundlegende Funktionalität ist also in pip und easy_install enthalten, aber es fehlen Funktionen, die ich gerne sehen würde, um sie benutzerfreundlicher und benutzerfreundlicher zu machen und mit CPAN und RubyGems gleichzusetzen.
quelle
Es gibt mindestens zwei, easy_install und seinen Nachfolger pip .
quelle
Ab mindestens Ende 2014 sollte die Anaconda Python-Distribution von Continuum Analytics mit dem Conda- Paketmanager in Betracht gezogen werden. Es löst die meisten schwerwiegenden Probleme, auf die Python im Allgemeinen stößt (Verwalten verschiedener Python-Versionen, Aktualisieren von Python-Versionen, Paketverwaltung, virtuelle Umgebungen, Windows / Mac-Kompatibilität), in einem zusammenhängenden Download.
Damit können Sie so ziemlich alles tun, was Sie sich mit Python wünschen, ohne das System ändern zu müssen. Meine nächste bevorzugte Lösung ist pip + virtualenv, aber Sie müssen entweder virtualenv in Ihrem System Python installieren (und Ihr System Python ist möglicherweise nicht die gewünschte Version) oder aus dem Quellcode erstellen . Anaconda macht diesen gesamten Vorgang zum Klicken auf eine Schaltfläche und fügt eine Reihe weiterer Funktionen hinzu.
quelle
Das wäre einfach zu installieren .
quelle
easy_install
, ablehnen möchten , überprüfen Sie bitte zuerst die Daten. Das war ein gültiger Rat, als er vor fast 7 Jahren gegeben wurde . Ich denke nicht, dass wir Antwortenden dies regelmäßig überprüfen werden, um es zu aktualisieren, also ist Downvoting dumm.Es heißt Setuptools. Sie führen es mit dem Befehl "easy_install" aus.
Sie finden das Verzeichnis unter http://pypi.python.org/
quelle
Ich sehe weder MacPorts noch Homebrew, die in anderen Antworten hier erwähnt werden, aber da ich sie an anderer Stelle im Stapelüberlauf für verwandte Fragen sehe, füge ich meine eigenen 0,02 US-Dollar hinzu, die viele Leute MacPorts nicht nur als Paket betrachten Manager für Pakete im Allgemeinen (ab heute werden 16311 Pakete / Ports aufgelistet, 2931 passend zu "Python", wenn auch nur für Macs), aber auch als anständiger (vielleicht besserer) Paketmanager für Python-Pakete / Module:
Frage
"... mit welcher Methode verwalten Mac-Python-Entwickler ihre Module?"
Antworten
"MacPorts ist perfekt für Python auf dem Mac."
"Der beste Weg ist, MacPorts zu verwenden."
"Ich bevorzuge MacPorts ..."
"Mit meinem MacPorts-Setup ..."
"Ich verwende MacPorts, um ... Module von Drittanbietern zu installieren, die von MacPorts verfolgt werden."
SciPy
"Macs (im Gegensatz zu Linux) haben keinen Paketmanager, aber es gibt einige beliebte Paketmanager, die Sie installieren können. Macports ..."
Ich überlege immer noch, ob ich MacPorts selbst verwenden soll oder nicht, aber im Moment neige ich mich in diese Richtung.
quelle
pip install <your_favorite_package>
Installieren Sie dann unter Windows http://chocolatey.org/
Öffne ein neues cmd-Fenster mit dem aktualisierten PATH. Als nächstes tun
Danach kannst du
quelle
Da hier niemand pipenv erwähnt hat, möchte ich meine Ansichten beschreiben, warum jeder es für die Verwaltung von Python-Paketen verwenden sollte.
Wie bei @ColonelPanic erwähnt, gibt es verschiedene Probleme mit dem Python- Paketindex sowie mit pip und virtualenv .
Pipenv löst die meisten Probleme mit pip und bietet zusätzliche Funktionen.
Pipenv-Funktionen
Pipenv soll pip und virtualenv ersetzen. Dies bedeutet, dass pipenv automatisch eine separate virtuelle Umgebung für jedes Projekt erstellt, um Konflikte zwischen verschiedenen Python-Versionen / Paketversionen für verschiedene Projekte zu vermeiden.
Wenn Sie bereits an Python-Projekten gearbeitet haben, werden Sie feststellen, dass diese Funktionen die Verwaltung von Paketen erheblich vereinfachen.
Andere Befehle
check
prüft auf Sicherheitslücken und stellt sicher, dass die PEP 508-Anforderungen von der aktuellen Umgebung erfüllt werden. ( was ich besonders danach für eine großartige Funktion halte - Schädliche Pakete auf PyPi )graph
zeigt Ihnen ein Abhängigkeitsdiagramm Ihrer installierten Abhängigkeiten.Sie können hier mehr darüber lesen - Pipenv .
Installation
Die Installationsdokumentation finden Sie hier
PS: Wenn Sie mit den Python - Paket gern Arbeitsanforderungen , würden Sie gerne wissen , dass pipenv vom selben Entwickler Kenneth Reitz
quelle
Im Jahr 2019 ist Poesie der Paket- und Abhängigkeitsmanager, den Sie suchen.
https://github.com/sdispater/poetry#why
Es ist modern, einfach und zuverlässig.
quelle
Poesie ist das, wonach Sie suchen. Es kümmert sich um das Abhängigkeitsmanagement, die virtuellen Umgebungen und die Ausführung.
quelle