Unterschied zwischen 'python setup.py install' und 'pip install'


104

Ich habe ein externes Paket, das ich aus einer TAR-Datei in mein Python Virtualenv installieren möchte. Was ist der beste Weg, um das Paket zu installieren?

Ich habe zwei Möglichkeiten entdeckt, die dies ermöglichen:

  1. Extrahieren Sie die TAR-Datei und führen Sie sie python setup.py installim extrahierten Verzeichnis aus.
  2. pip install packagename.tar.gzaus Beispiel 7 in https://pip.pypa.io/en/stable/reference/pip_install/#examples

Ist, wenn es einen Unterschied gibt, machen Sie sie auf diese 2 Arten.


5
Verwenden Sie pip. Sie können damit Pakete deinstallieren.
Blender

"From Source" wie in "VCS Checkout" oder wie in sdist?

Was "am besten" ist, hängt von Ihren Anforderungen ab! Haben Sie eine dieser Lösungen ausprobiert und sie in irgendeiner Weise verfehlt? Oder fragen Sie , was der Unterschied ist zwischen diesen Ansätzen?
Martin Atkins

Auf Fedora zum Beispiel mit yum.
Perreal

Antworten:


108

An der Oberfläche tun beide dasselbe: Sie tun entweder python setup.py installoder pip install <PACKAGE-NAME>installieren Ihr Python-Paket für Sie mit einem Minimum an Aufwand.

Die Verwendung von Pip bietet jedoch einige zusätzliche Vorteile, die die Verwendung wesentlich angenehmer machen.

  • pip lädt automatisch alle Abhängigkeiten für ein Paket für Sie herunter. Im Gegensatz dazu müssen Sie bei Verwendung setup.pyhäufig manuell nach Abhängigkeiten suchen und diese herunterladen. Dies ist mühsam und kann frustrierend sein.
  • pip verfolgt verschiedene Metadaten, mit denen Sie Pakete einfach mit einem einzigen Befehl deinstallieren und aktualisieren können: pip uninstall <PACKAGE-NAME>und pip install --upgrade <PACKAGE-NAME>. Im Gegensatz dazu, wenn Sie ein Paket mit installierensetup.py manuell löschen und manuell verwalten möchten, was möglicherweise fehleranfällig sein kann.
  • Sie müssen Ihre Dateien nicht mehr manuell herunterladen. Wenn Sie verwenden setup.py, müssen Sie die Website der Bibliothek besuchen, herausfinden, wo sie heruntergeladen werden kann, die Datei extrahieren, ausführen setup.py... Im Gegensatz dazu durchsucht pip automatisch den Python- Paketindex (PyPi), um festzustellen, ob das Paket dort vorhanden ist, und lädt das Paket automatisch herunter, extrahiert es und installiert es für Sie. Mit wenigen Ausnahmen ist fast jede wirklich nützliche Python-Bibliothek auf PyPi zu finden.
  • Mit pip können Sie problemlos Räder installieren. Dies ist der neue Standard der Python-Distribution. Weitere Infos zu Rädern .
  • pip bietet zusätzliche Vorteile, die sich gut in die Verwendung integrieren lassen. Mit diesem virtualenvProgramm können Sie mehrere Projekte ausführen, für die widersprüchliche Bibliotheken und Python-Versionen auf Ihrem Computer erforderlich sind. Weitere Infos .
  • pip wird standardmäßig mit Python ab Python 2.7.9 in der Python 2.x-Serie und ab Python 3.4.0 in der Python 3.x-Serie gebündelt, was die Verwendung noch einfacher macht.

Verwenden Sie also grundsätzlich pip. Es bietet nur Verbesserungen gegenüber der Verwendung python setup.py install.


Wenn Sie eine ältere Version von Python verwenden, kein Upgrade durchführen können und pip nicht installiert ist, finden Sie weitere Informationen zur Installation von pip unter den folgenden Links:

pip selbst benötigt kein Tutorial. In 90% der Fälle ist der einzige Befehl, den Sie wirklich benötigen, der pip install <PACKAGE-NAME>. Wenn Sie jedoch mehr darüber erfahren möchten, was genau Sie mit pip tun können, lesen Sie:

Es wird auch allgemein empfohlen, pip und virtualenv zusammen zu verwenden. Wenn Sie ein Anfänger von Python sind, denke ich persönlich, dass es in Ordnung ist, zunächst nur Pip zu verwenden und Pakete global zu installieren, aber ich denke, Sie sollten auf die Verwendung von virtualenv umsteigen, wenn Sie ernstere Projekte angehen.

Wenn Sie mehr über die gemeinsame Verwendung von pip und virtualenv erfahren möchten, lesen Sie:


1
Ruft pip install intern die Datei setup.py auf?
Variable

@variable, Pip-Installation von "Rädern", vorkompilierte Pakete, nicht, Pip-Installation von der Quelle: siehe Pip-Install-Build-System-Schnittstelle
Denis

Nach meiner Erfahrung werden python setup.py installauch Abhängigkeiten heruntergeladen und installiert. Ist dies eine Änderung, seit Sie diese Antwort 2013 geschrieben haben?
Ken Williams

19

python setup.py installist das Analogon von make install: Es ist eine eingeschränkte Möglichkeit, Dateien zu kompilieren und in Zielverzeichnisse zu kopieren. Dies bedeutet nicht, dass dies der beste Weg ist, um Software wirklich auf Ihrem System zu installieren.

pipist ein Paketmanager, der Pakete wie bekannte Paketmanager installieren, aktualisieren, auflisten und deinstallieren kann, einschließlich: dpkg, apt, yum, urpmi, portsusw. Unter der Haube wird er ausgeführtpython setup.py install , jedoch mit spezifischen Optionen, um zu steuern, wie und wo Dinge installiert werden.

Zusammenfassend: verwenden pip.


2

Die Frage bezieht sich auf die bevorzugte Methode zum Installieren eines lokalen Tarballs , der ein Python-Paket enthält, NICHT auf den Vorteil des Hochladens eines Pakets auf einen Indexdienst wie PyPi.

Wie ich nicht weiß, lädt ein Software-Distributor sein Paket nicht auf PyPi hoch, sondern bittet Entwickler, das Paket von ihrer Website herunterzuladen und zu installieren.

python setup.py installieren

Dies kann funktionieren, wird aber nicht empfohlen. Es ist nicht erforderlich, die Tarball-Datei zu entpacken und darauf zuzugreifen, um die Datei setup.py auszuführen.

pip install ../path/to/packagename.tar.gz

Dies ist die Art und Weise, wie sie entworfen und bevorzugt wird. Präzise und auf PyPi-Pakete ausgerichtete Pakete.

Weitere Informationen pip installzu finden Sie hier: https://pip.readthedocs.io/en/stable/reference/pip_install/


Können wir pip install -e verwenden?
Variable
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.