Verwenden von pip vs. MacPorts zum Installieren von Python-Paketen

12

Ich könnte ein Python - Paket installieren ( zum Beispiel , numpy) auf meinem Mac entweder über Macports:

port install py-numpy

oder über pip:

pip install numpy

Was sind die allgemeinen Vor- und Nachteile jedes Ansatzes? Wann sollte jeder Ansatz angewendet werden?

  • Wann sollte ich eins dem anderen vorziehen?
  • Ist es wichtig, ob das von mir installierte Paket klein oder groß ist (z. B. numpy)?
  • Kommt es auf die Version von Python an, die ich verwende ( 2.xvs. 3.xoder Apple pythonvs. MacPort python)?
  • Ist es wichtig, ob pythonauf meinem Mac mehrere Versionen von installiert sind?
  • Können sie gleichzeitig verwendet werden?

Ich hoffe auf eine Antwort, die eine kurze Auflistung einiger Vor- und Nachteile jedes Ansatzes mit einigen Diskussionen darüber enthält, wann einer über den anderen gewählt werden soll.

jvriesem
quelle
Verwandte, aber zu spezifische: stackoverflow.com/questions/16895282/… . Ich frage eher nach allgemeinen Python-Paketen als nur matplotlib.
Jvriesem
AFAIK diese sind bereits installiert - Sie können im Terminal einchecken:> Python und nächster Befehl> numpy als np importieren und wenn keine Fehler vorliegen, haben Sie es. Eine alternative Lösung ist die Verwendung von anaconda aus continuum.io/downloads - verfügt über viele Funktionen und weitere Installationen mit pip werden in Ihrem anaconda-Ordner gespeichert.
Yoan
@ Yoan: numpyist nur ein Beispiel. Ich frage nach der Installation von Paketen im Allgemeinen.
Jvriesem

Antworten:

3

Sie können gleichzeitig verwendet werden, und es sollte kein Problem zwischen dem Mischen der beiden geben (mit einer großen Einschränkung und einem Gotcha ...).

Die Einschränkung

Die Einschränkung ist, dass Macports / Homebrew und Pip nicht wissen, dass beide gegeneinander installiert wurden.

Nehmen wir zum Beispiel an, Sie installieren Python 3.6 auf Ihrem Mac. Sie möchten nltk, was für diese Version auf Macports technisch nicht verfügbar ist, aber es ist auf pip. Also installierst du auf pip. Zwei Monate später wird es auf Macports installiert und Sie können es installieren. Jetzt haben Sie zwei verschiedene Versionen von nltkauf Ihrer Maschine, also Vorbehalt Emptor .

Die Gotcha

Wenn Sie pip mit Macports verwenden, müssen Sie sicherstellen, dass es sich um den pip handelt, der über Macports installiert und dieser Python-Version zugeordnet ist. So sehen Sie beispielsweise einen py35-pip, einen py36-pip usw.

Sobald Sie den richtigen Pip installiert haben, stellen Sie mit dem selectBefehl von Macports sicher, dass er mit der entsprechenden Python-Version aktiviert ist:

sudo port select
Rob M.
quelle
Ich habe die Erfahrung gemacht, dass die Installation von Modulen in dem von MacPorts erstellten globalen Python-Bereich zu Konflikten führt. Früher oder später wird MacPorts versuchen, einen Port zu installieren, den Sie bereits per Pip installiert haben. Es wird eine Fehlermeldung ausgegeben, dass eine Datei in diesem Port vorhanden ist, aber nicht von MacPorts installiert wurde. Ich denke, die Antwort von @ IanC ist besser: Installieren Sie im globalen Python-Bereich nur mit MacPorts, installieren Sie in virtuellen Umgebungen nur mit pip.
Jim DeLaHunt
4

Sie sollten es verwenden, pipda es das Python-native Tool zum Verwalten von Paketinstallationen ist, aber Sie sollten keine Pip-Installationsvorgänge in Ihre Python-Basisinstallation ausführen. Es kann ein Chaos sein, feste Versionsabhängigkeiten zwischen mehreren Software-Repositorys zu sortieren, wenn Sie alles in Ihre Python-Basisinstallation auf Ihrem Computer installieren.

Stattdessen sollten Sie virtualenv pip-installieren und dann verschiedene virtuelle Python-Installationen und alle zugehörigen pip-installierten Paketpakete für jede virtuelle Umgebung verwalten.

Auf diese Weise können Sie von der Arbeit mit beispielsweise beautifulsoup1.x in einem Software-Repository zu beautifulsoup2.x in einem anderen Repository wechseln, ohne sich durch die Hölle des Abhängigkeitsmanagements wühlen zu müssen.

Ian C.
quelle
0

Ich habe gerade einen kurzen Test mit Homebrew , MacPorts und pip3 durchgeführt, um nach demselben Paket zu suchen :

brew search numpy
sudo port search --name --glob '*numpy'
pip3 search numpy

MacPorts und pip3 hatten das gleiche Paket (Version 1.18.1 ), während Homebrew Version 1.16 hatte .

Wenn Sie mit anderen zusammenarbeiten, sollten Sie sich am besten darauf einigen, wie Ihre Entwicklungsumgebungen konfiguriert sind, oder Sie werden auf Anomalien stoßen und unterschiedliche Testergebnisse erhalten. Daher ist das beste Werkzeug das, über das Sie sich alle einig sind ;-)

F1Linux
quelle