Es gibt wirklich keine einzige "Antwort" auf diese Frage, aber es gibt definitiv einige hilfreiche Konzepte, die Ihnen helfen können, eine Entscheidung zu treffen.
Die erste Frage, die in Ihrem Anwendungsfall beantwortet werden muss, lautet "Möchte ich das System Python verwenden?". Wenn Sie Python verwenden möchten, das mit Ihrem Betriebssystem verteilt wird, ist die Verwendung der Installationsmethode apt-get möglicherweise in Ordnung. Abhängig von der Verteilungsmethode des Betriebssystems müssen Sie jedoch noch weitere Fragen stellen, z. B. "Möchte ich mehrere Versionen dieses Pakets installieren?" Wenn die Antwort ja ist, ist es wahrscheinlich keine gute Idee, so etwas wie apt zu verwenden. Dpkg entpackt so ziemlich nur ein Archiv im Stammverzeichnis des Dateisystems. Es ist also Sache des Paketverwalters, sicherzustellen, dass das Paket unter sehr geringen Voraussetzungen sicher installiert wird. Bei den meisten Debian-Paketen würde ich davon ausgehen (jemand kann mich hier gerne korrigieren), dass sie einfach entpacken und ein Top-Level-Paket bereitstellen.
Angenommen, das Paket ist "virtualenv" /usr/lib/python2.x/site-packages/virtualenv
. Wenn Sie es mit installieren, erhalten easy_install
Sie möglicherweise so etwas /usr/lib/python2.x/site-packages/virtualenv.egg-link
, /usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.egg
das auf ein Verzeichnis oder ein komprimiertes Ei verweist. Pip macht etwas Ähnliches, obwohl es keine Eier verwendet und stattdessen das Paket der obersten Ebene direkt im lib
Verzeichnis ablegt.
Ich bin vielleicht auf dem Weg, aber der Punkt ist, dass jede Methode unterschiedliche Bedürfnisse berücksichtigt. Aus diesem Grund sind Tools wie virtualenv hilfreich, da Sie Ihre Python-Bibliotheken so sandboxen können, dass Sie eine beliebige Kombination von Bibliotheken und Versionen verwenden können.
Setuptools ermöglicht auch die Installation von Paketen als Multiversion, was bedeutet, dass kein einzelnes Mo dule_name.egg-link
erstellt wird. Um diese Pakete zu importieren, müssen Sie pkg_resources und die __import__
Funktion verwenden.
Zurück zu Ihrer ursprünglichen Frage: Wenn Sie mit dem Systempython zufrieden sind und planen, mit virtualenv und pip Umgebungen für verschiedene Anwendungen zu erstellen, erscheint die Installation von virtualenv und / oder pip auf Systemebene mit apt-get völlig angemessen. Ein Wort der Vorsicht ist jedoch, dass, wenn Sie planen, Ihre Distributionen Python zu aktualisieren, dies einen Welleneffekt durch Ihre virtuellen Umgebungen haben kann, wenn Sie wieder auf Ihre System-Site-Pakete verlinken.
Ich sollte auch erwähnen, dass keine dieser Optionen von Natur aus besser ist als die anderen. Sie verfolgen einfach unterschiedliche Ansätze. Die Verwendung der Systemversion ist eine hervorragende Möglichkeit, Python-Anwendungen zu installieren. Die Entwicklung mit Python kann jedoch sehr schwierig sein. Einfache Installation und Setuptools sind in einer Welt ohne virtuelle Umgebung sehr praktisch. Wenn Sie jedoch verschiedene Versionen derselben Bibliothek verwenden müssen, wird dies auch ziemlich unhandlich. Pip und virtualenv verhalten sich eher wie eine virtuelle Maschine. Anstatt darauf zu achten, dass die Dinge nebeneinander installiert werden, erstellen Sie einfach eine völlig neue Umgebung. Der Nachteil hierbei ist, dass Sie über 30 virtuelle Umgebungen später möglicherweise ziemlich viel Speicherplatz verbraucht und Ihr Dateisystem überfüllt haben.
Wie Sie sehen, ist es bei den vielen Optionen schwierig zu sagen, welche Methode verwendet werden soll, aber mit einer kleinen Untersuchung Ihrer Anwendungsfälle sollten Sie in der Lage sein, eine Methode zu finden, die funktioniert.
ez_setup.py
nach einer "leichten Version" suchen, um Pip zu bekommen. Ich würde das gleiche tun, aber befürchten, dass es in naher Zukunft brechen wird und ich werde hier wieder stecken bleiben (wie ich es immer tue)