web-dev-qa-db-de.com

Verfügt Python über ein Paket-/Modulverwaltungssystem?

Verfügt Python über ein Paket-/Modulverwaltungssystem, ähnlich wie Ruby Rubygems hat, wo Sie gem install packagename ausführen können?

Bei Installation von Python-Modulen werden nur Verweise auf python setup.py install angezeigt. Dafür müssen Sie jedoch zuerst das Paket finden.

139
tommy chheng

Jüngster Fortschritt

März 2014: Gute Nachrichten! Python 3.4 wird mit Pip geliefert. Pip ist seit langem der Standard-Paketmanager von Python. Sie können ein Paket wie folgt installieren:

pip install httpie

Wahey! Dies ist die beste Funktion aller Python-Versionen. Dadurch wird die Fülle an Bibliotheken der Community für jeden zugänglich. Neugeborene sind nicht länger von der Verwendung von Community-Bibliotheken aufgrund der unzulänglichen Setup-Schwierigkeit ausgeschlossen.

Allerdings gibt es nach wie vor eine Reihe herausragender Frustrationen beim Python-Verpackungserlebnis. Kumulativ machen sie Python für Neulinge sehr unfreundlich. Auch die lange Geschichte der Vernachlässigung (dh der Versand von Python 2.0 bis Python 3.3 über einen Zeitraum von 14 Jahren mit einem Paketmanager) hat der Community Schaden zugefügt. Ich beschreibe beides unten.

Hervorragende Frustrationen

Es ist wichtig zu verstehen, dass erfahrene Benutzer zwar in der Lage sind, mit diesen Frustrationen umzugehen, aber für Neulinge in Python erhebliche Barrieren darstellen. Tatsächlich wird die Schwierigkeit und generelle Benutzerunfreundlichkeit viele von ihnen wahrscheinlich abschrecken. 

Die PyPI-Website ist nicht hilfreich

Jede Sprache mit einem Paketmanager verfügt über ein offizielles (oder quasi-offizielles) Repository, in dem 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).

  1. https://rubygems.org/gems/Rails RubyGems-Seite für das Paket Rails 
  2. https://www.npmjs.org/package/express Npm-Seite für das Paket express
  3. https://pypi.python.org/pypi/simplejson/ PyPI-Seite für das Paket simplejson

Die RubyGems- und Npm-Seiten beginnen mit einer einzeiligen Beschreibung des Pakets und einer umfassenden Anleitung zur Installation.

Wehe allen glücklosen Python-Benutzern, die naiv nach PyPI suchen. Auf https://pypi.python.org/pypi/simplejson/ finden sie keine 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 beharrlich sind, können sie es eventuell extrahieren, und dann setup.py und schließlich mit Hilfe von Google setup.py install ausführen. Einige werden aufgeben und das Rad neu erfinden .. 

Natürlich ist das alles falsch. Die einfachste-Methode zum Installieren eines Pakets besteht aus einem Pip-Befehl. Aber PyPI erwähnte Pip nicht einmal. Stattdessen führte sie sie auf einen archaischen und langweiligen 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:

Fehler: vcvarsall.bat konnte nicht gefunden werden

Der Versuch, das zu beheben, ist eine der häufigsten Fragen zum Stack Overflow: " Fehler: vcvarsall.bat " konnte nicht gefunden werden

Nur wenige Leute haben Erfolg.

Zum Vergleich gibt Ruby in dieser Situation diese Meldung aus, in der erläutert wird, was los ist und wie man es beheben kann:

Aktualisieren Sie Ihren PATH, um Build-Tools einzubinden, oder laden Sie das DevKit von http://rubyinstaller.org/downloads herunter und befolgen Sie die Anweisungen unter http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

Das Veröffentlichen von Paketen ist schwer

Ruby und Nodejs werden mit den voll ausgestatteten Paketmanagern Gem (seit 2007) und Npm (seit 2011) ausgeliefert und haben das Teilen von Communities rund um GitHub gefördert. Npm macht Publishing-Pakete So einfach wie das Installieren von ihnen, es hat bereits 64k Pakete . RubyGems-Listen 72-KB-Pakete . Der ehrwürdige Python-Paketindex listet nur 41k .

Geschichte

Python flog seinem Motto " battery included " entgegen und lieferte bis 2014 keinen Paketmanager aus. 

Bis zu Pip war der De-facto-Standard ein Befehl easy_install. Es war kläglich unzureichend. Das war kein Befehl zum Deinstallieren von Paketen.

Pip war eine massive Verbesserung. Es hatte die meisten Funktionen von Ruby's Gem. Leider war Pip bis vor kurzem ironisch schwer zu installieren. Tatsächlich bleibt das Problem eine der wichtigsten Python-Fragen zu Stack Overflow: " Wie installiere ich pip unter Windows? "

209
Colonel Panic

Der Python Package Index (PyPI) scheint Standard zu sein:

  • Um install ein Paket: pip install MyProject
  • Update ein Paket pip install --upgrade MyProject
  • Eine Version eines Pakets fixieren pip install MyProject==1.0

Sie können den Paketmanager wie folgt installieren:

curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip

Verweise:

64
Thomas Bratt

Um nur einen Kontrast zu schaffen, gibt es auch pip .

Als Ruby- und Perl-Entwickler und Lern-Python-Entwickler habe ich nicht gefunden, dass easy_install oder pip mit RubyGems oder CPAN gleichwertig ist. 

Ich neige dazu, dass meine Entwicklungssysteme die neuesten Modulversionen ausführen, während die Entwickler sie aktualisieren, und meine Produktionssysteme auf Set-Versionen einfrieren. Sowohl RubyGems als auch CPAN erleichtern das Auffinden von Modulen, indem sie auflisten, was verfügbar ist. Anschließend können Sie sie einzeln installieren oder später aktualisieren, falls dies gewünscht wird.

easy_install und pip erleichtern die Installation eines Moduls EINMAL ich habe es über eine Browsersuche gefunden oder auf andere Weise davon erfahren, 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 aktualisieren nicht alles auf einmal, wenn ich möchte.

Die grundlegende Funktionalität ist also in pip und easy_install vorhanden, aber es fehlen Funktionen, die ich gerne sehen würde, um sie freundlicher und benutzerfreundlicher zu machen und mit CPAN und RubyGems gleichzusetzen.

21
the Tin Man

Es gibt mindestens zwei, easy_install und deren Nachfolger pip .

13
Wolph

Zumindest ab Ende 2014 sollte die Python-Distribution Continuum Analytics 'Anaconda mit dem Paketmanager conda in Betracht gezogen werden. Es löst die meisten schwerwiegenden Probleme, mit denen Python im Allgemeinen konfrontiert ist (verschiedene Python-Versionen verwalten, Python-Versionen aktualisieren, Paketverwaltung, virtuelle Umgebungen, Windows/Mac-Kompatibilität).

Sie können so ziemlich alles mit Python machen, 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 Quelle erstellen Anaconda macht diesen gesamten Vorgang per Mausklick und fügt weitere Funktionen hinzu.

11
anderspitman

Das wäre easy_install .

6
Kirk Strauser

Es heißt Setuptools. Sie führen es mit dem Befehl "easy_install" aus.

Sie finden das Verzeichnis unter http://pypi.python.org/

6
Chris Long

Unter Windows install http://chocolatey.org/ dann 

choco install python

Öffnet ein neues Cmd-Fenster mit dem aktualisierten PATH. Als nächstes tun

choco install pip

Danach kannst du

pip install pyside
pip install ipython
...
4
hansvb

Ich sehe weder MacPorts noch Homebrew in anderen Antworten hier, aber da ich sie an anderen Stellen von Stack Overflow für verwandte Fragen erwähnt sehe, füge ich meine eigenen 0,02 USD hinzu, die viele Leute scheinen MacPorts ist nicht nur ein Paketmanager für Pakete im Allgemeinen (heute werden 16311 Pakete/Ports und 2931 "python", jedoch nur für Macs) aufgelistet, sondern auch als ordentliches (möglicherweise besseres) Paket Manager für Python-Pakete Module:

Frage

/ - "... welche Methode verwenden Mac-Python-Entwickler zum Verwalten ihrer Module?"

Antworten

SciPy

"Macs (im Gegensatz zu Linux) werden nicht mit einem Paketmanager geliefert, aber es gibt einige beliebte Paketmanager, die Sie installieren können . Macports ..."

Ich debattiere noch immer darüber, ob ich MacPorts selbst verwenden möchte oder nicht, aber im Moment lehne ich in diese Richtung.

4
Osteoboon

Da niemand pipenv hier erwähnt hat, möchte ich meine Ansichten beschreiben, warum jeder es verwenden sollte, um Python-Pakete zu verwalten.

Wie bei @CononelPanic erwähnt, gibt es mehrere Probleme mit dem Python Package Index und mit pip und virtualenv .

Pipenv löst die meisten Probleme mit pip und stellt zusätzliche Funktionen bereit.

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.

  • Ermöglicht wirklich deterministische Builds, wobei Sie nur das angeben, was Sie möchten.
  • Erzeugt und prüft Datei-Hashes auf gesperrte Abhängigkeiten.
  • Installieren Sie erforderliche Pythons automatisch, wenn pyenv verfügbar ist.
  • Findet Ihr Projekt automatisch rekursiv nach einem Pipfile.
  • Erzeugt automatisch eine Pip-Datei, falls keine vorhanden ist.
  • Erzeugt automatisch eine Virtualenv an einem Standardspeicherort.
  • Fügt Pakete automatisch zu einer Pipdatei hinzu bzw. entfernt sie, wenn sie nicht installiert sind.
  • Lädt automatisch .env-Dateien, falls vorhanden.

Wenn Sie zuvor an Python-Projekten gearbeitet haben, würden Sie erkennen, dass diese Funktionen die Verwaltung von Paketen erleichtern. 

Andere Befehle

  • check prüft auf Sicherheitslücken und gibt an, dass die Anforderungen des PEP 508 von der aktuellen Umgebung erfüllt werden. (was ich denke, ist ein tolles Feature, besonders nach diesem - Malicious Pakete auf PyPi)
  • graph zeigt Ihnen ein Abhängigkeitsdiagramm Ihrer installierten Abhängigkeiten.

Mehr darüber erfahren Sie hier - Pipenv .

Installation

Die Installationsdokumentation finden Sie hier

P.S .: Wenn Sie gern mit dem Python-Paket request gearbeitet haben, würden Sie sich freuen zu erfahren, dass pipenv vom selben Entwickler Kenneth Reitzstammt. _

3
Vaulstein

Poesie ist was Sie suchen. Es kümmert sich um das Abhängigkeitsmanagement, um virtuelle Umgebungen und um das Laufen.

0
0x32e0edfb

2019 poetry ist der Paket- und Abhängigkeitsmanager, nach dem Sie suchen.

https://github.com/sdispater/poetry#why

Es ist modern, einfach und zuverlässig.

0
gagarine