Was ist die offizielle „bevorzugte“ Methode, um pip und virtualenv systemweit zu installieren?

86

Ist es das, was die Leute am häufigsten zu empfehlen scheinen:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install virtualenv

Oder das, was ich von http://www.pip-installer.org/en/latest/installing.html bekommen habe :

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

Oder etwas ganz anderes?

Kaffeemühle
quelle

Antworten:

93

Wenn Sie das neueste Python (2.7.9 und höher) installieren können, ist Pip jetzt im Lieferumfang enthalten. Siehe: https://docs.python.org/2.7//installing/index.html
Wenn nicht:
Update (aus den Versionshinweisen):

Ab Version 1.5.1 benötigt pip keine setuptools, bevor get-pip.py ausgeführt wird. Wenn setuptools (oder Distribute) noch nicht installiert ist, installiert get-pip.py außerdem setuptools für Sie.

Ich führe jetzt die regulären:

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

Hier sind die offiziellen Installationsanweisungen: http://pip.readthedocs.org/en/latest/installing.html#install-pip

BEARBEITEN 25-Jul-2013:
Geänderte URL für die Installation von setuptools.

BEARBEITEN 10-Feb-2014:
Installation von setuptools entfernt (danke @Ciantic)

EDIT 26-Jun-2014:
URL erneut aktualisiert (danke @LarsH)

EDIT 1-Mar-2015:
Pip ist jetzt mit Python gebündelt

Tal Weiss
quelle
1
Wo / wie installiert man setuptools-0.8? Sieht so aus, als würden Sie nur ez_setup.pynach 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)
Steven Lu
3
Ah, es sieht so aus, als ob die Anweisungen genau das tun, was Sie hier sagen. Es ist sanktioniert. Egal Dann.
Steven Lu
4
Es gibt eine neue (?) Möglichkeit, dies zu tun. Dadurch werden Pip und Setuptools automatisch installiert: wget --no-check-certificate https://raw.github.com/pypa/pip/master/contrib/get-pip.py und dann python get-pip.py(möglicherweise
Sudo
3
Jetzt scheint sich die URL für get-pip.py geändert zu haben https://bootstrap.pypa.io/get-pip.py. Wahrscheinlich besser, nur um auf die offiziellen Anweisungen zu verlinken.
LarsH
2
PS Danke für diese Antwort - es hat mir geholfen, pip zu installieren.
LarsH
21

http://www.pip-installer.org/en/latest/installing.html ist wirklich die kanonische Antwort auf diese Frage.

Insbesondere lauten die systemweiten Anweisungen:

$ curl -O http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py
$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ python get-pip.py

Der in der Frage zitierte Abschnitt enthält virtualenveher Anweisungen als systemweite Anweisungen. Die easy_installAnweisungen gibt es schon länger, aber es ist nicht mehr nötig, dies so zu tun.

Richard Jones
quelle
Bearbeitet, um den Unterschied zwischen den systemweiten Anweisungen auf dieser Seite und den virtualenvin der Frage zitierten Anweisungen zu verdeutlichen .
Ncoghlan
1
Update: Distribute funktioniert nicht mehr für Pip! Siehe stackoverflow.com/a/17601159/78234
Tal Weiss
1
Bitte beachten Sie, dass die Anweisungen auf der verlinkten Seite nicht mehr mit den Anweisungen hier übereinstimmen. Es ist am besten, einfach die offizielle Seite zu besuchen und zu tun, was sie sagen (und warum hat jemand an ihnen
gezweifelt?!
Der in dieser Antwort beschriebene Ansatz ist veraltet und scheint nicht mehr zu funktionieren.
Cel
16

Diese Antwort stammt von @webology auf Twitter:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install --upgrade pip virtualenv virtualenvwrapper

Meine hinzugefügten Notizen:

  • Unter Mac / Windows (und Linux, wenn das apt-Repo veraltet ist) würden Sie den ersten Schritt durch das Herunterladen von setuptools von http://pypi.python.org/pypi/setuptools ersetzen
  • Unter Windows müssten Sie virtualenvwrapper im letzten Schritt weglassen und es irgendwie manuell installieren. Ich weiß nicht, ob es einen Weg gibt, dies ohne Cygwin zu tun, aber ich hoffe es.
Kaffeemühle
quelle
1
Wenn die Bedingung ist, dass Sie systemweite Installationen von pip und virtualenv wünschen, ist dies das, was ich im Allgemeinen mache. Die Anweisungen aus den Pip-Dokumenten, die als zweite Alternative in der Frage angegeben werden, basieren auf der Annahme, dass wir die systemweite Installation vermeiden.
Carl Meyer
3
Sie können die ersten beiden Befehle durch ersetzen $ sudo apt-get install python-pip. Durch die Installation von python-pip werden auch python-setuptools installiert.
Dennis
4

Unter Ubuntu 12.04 hatte ich viel Glück mit dem Paketmanager:

sudo apt-get install python-pip virtualenvwrapper
Jason McVetta
quelle
1
Die verpackten Versionen sind weit veraltet. 12.04 bietet, python-pip 1.0-1build1die Anfang 2011 und virtualenvwrapper 2.11.1-21Januar 2012 veröffentlicht wurde. Mit der Antwort von @Richard Jones erhalten Sie die neuesten Informationen.
JCotton
3

Es gibt keine bevorzugte Methode - alles hängt von Ihren Bedürfnissen ab. Oft müssen Sie aus irgendeinem Grund verschiedene Python-Interpreter auf dem System haben. In diesem Fall müssen Sie das Material für jeden Interpreter einzeln installieren. Abgesehen davon: Ich bevorzuge es, Dinge selbst zu installieren, anstatt von vorgefertigten Dingen abhängig zu sein, die manchmal Probleme verursachen - aber das ist nur eine mögliche Option.

Andreas Jung
quelle
Ich frage speziell nach der bevorzugten Methode, weil ich diese Anweisungen einer Klasse von 20 Personen geben werde und sie nicht irreführen möchte.
Kaffeemühle
3

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_installSie möglicherweise so etwas /usr/lib/python2.x/site-packages/virtualenv.egg-link, /usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.eggdas 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 libVerzeichnis 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-linkerstellt 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.

Elarson
quelle
2

Da virtualenvs standardmäßig pip enthalten, installiere ich pip fast nie global. Was ich mache, sieht am Ende eher so aus:

$ sudo apt-get install python-setuptools
$ curl -O http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py
$ sudo easy_install virtualenv

Ich installiere und richte dann virtualenvwrapper nach meinen Wünschen ein und los geht's. Es könnte sich auch lohnen, einen Blick auf Jeremy Avnets virtuellen Env-Burrito zu werfen:

https://github.com/brainsik/virtualenv-burrito

David Gouldin
quelle
Danke für den Fang. ;)
David Gouldin
3
Warum beschäftigen Sie sich mit Python-Setuptools und verteilen dann, wenn Sie direkt zum Verteilen gehen können?
Lambacck
@lambacck Könnten Sie bitte das, was Sie beschreiben, in einer separaten Antwort veröffentlichen (auch wenn es sich wiederholt)?
Kaffeemühle
2
Ganz zu schweigen davon, dass auf jedem aktuellen Ubuntu (und Debian auch? Nicht sicher) das "python-setuptools" -Paket tatsächlich verteilt wird. Sie können also auch einfach den spezifischen Verteilungsschritt überspringen.
Carl Meyer
@ Kaffeemühle verteilen ist eine Gabel von Setuptools und bietet daher die gleiche Funktionalität (und mehr). Machen Sie sich nicht die Mühe, "apt-get install python-setuptools" auszuführen, es sei denn, python-setuptools wird verteilt (wie Carl angibt). In diesem Fall überspringen Sie die Schritte 2 und 3.
Lambacck
2

@ericholscher sagt auf Twitter: "Der in den offiziellen Dokumenten .."

Es ist ein großartiger Punkt, Sie sollten tun, was die Dokumente sagen.

Zitiert aus den offiziellen Installationsanweisungen für Pip unter http://www.pip-installer.org/en/latest/installing.html :

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...
Kaffeemühle
quelle
✓ Dies ist die beste Option, wenn Sie sich nicht auf Distributionspakete verlassen möchten.
Tobu
2

Ausgehend von Distributionspaketen können Sie entweder Folgendes verwenden:

sudo apt-get install python-virtualenv

Hiermit können Sie virtuelle Umgebungen erstellen, oder

sudo apt-get install python{,3}-pip

Hiermit können Sie beliebige Pakete in Ihrem Home-Verzeichnis installieren.

Wenn Sie an virtualenv gewöhnt sind, erhalten Sie mit dem ersten Befehl alles, was Sie benötigen (denken Sie daran, pip ist gebündelt und wird in jedem von Ihnen erstellten virtualenv installiert).

Wenn Sie nur Pakete installieren möchten, erhalten Sie mit dem zweiten Befehl das, was Sie benötigen. Verwenden Sie pip wie folgt:

pip install --user something

und so etwas setzen

PATH=~/.local/bin:$PATH

in deinem ~/.bashrc.


Wenn Ihre Distribution uralt ist und Sie ihre Pakete überhaupt nicht verwenden möchten (außer wahrscheinlich Python selbst), können Sie virtualenv entweder als Tarball oder als eigenständiges Skript herunterladen:

wget -O ~/bin/virtualenv https://raw.github.com/pypa/virtualenv/master/virtualenv.py
chmod +x ~/bin/virtualenv

Wenn Ihre Distribution eher auf dem neuesten Stand ist, verfügt Python3.3 über integrierte virtuelle Funktionen:

python3 -m venv ./venv

Dies läuft viel schneller, aber Setuptools und Pip sind nicht enthalten.

Tobu
quelle
2

Um pip auf einem Mac (osx) zu installieren, hat der folgende Liner für mich hervorragend funktioniert:

sudo easy_install pip
Brad Parks
quelle
2

In Raspbian gibt es nicht einmal eine Notwendigkeit zu erwähnen python2.7. In der Tat ist dies der beste Weg, um pip zu installieren, wenn die Python-Version in weniger als 2.7.9.

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

Danke an @ tal-weiss

Hemant Kumar
quelle
1

Ich benutze get-pip und virtualenv-burrito, um all dies zu installieren. Ich bin mir nicht sicher, ob Python-Setuptools erforderlich sind.

# might be optional. I install as part of my standard ubuntu setup script
sudo apt-get -y install python-setuptools

# install pip (using get-pip.py from pip contrib)
curl -O https://raw.github.com/pypa/pip/develop/contrib/get-pip.py && sudo python get-pip.py

# one-line virtualenv and virtualenvwrapper using virtualenv-burrito
curl -s https://raw.github.com/brainsik/virtualenv-burrito/master/virtualenv-burrito.sh | bash
carl_kibler
quelle
1

Auf Debian wäre der beste Weg, dies zu tun

sudo apt-get install python-pip

Yehonatan
quelle
1
Debian-Version kann sehr alt sein. Überprüfen Sie diese Antwort für weitere Informationen: unix.stackexchange.com/a/182467/17425
georgiecasey
0

Die erstere Methode ist in Ordnung. Das einzige Problem, das ich sehen kann, ist, dass Sie möglicherweise eine alte Version von setuptools erhalten (wenn das apt-Repository nicht auf dem neuesten Stand gehalten wurde.

bradley.ayers
quelle