Wie aktualisiere ich pip selbst aus meiner virtuellen Umgebung heraus?

523

Ich kann von Pip verwaltete Pakete aktualisieren, aber wie aktualisiere ich Pip selbst? Gemäßpip --version ich derzeit Pip 1.1 in meiner virtuellen Umgebung installiert und möchte auf die neueste Version aktualisieren.

Was ist der Befehl dafür? Muss ich Distribute verwenden oder gibt es einen nativen Pip- oder Virtualenv-Befehl? Ich habe es bereits versucht pip updateund pip update pipohne Erfolg.

Zakdances
quelle
40
pip install --upgrade pip? Es ist nur ein weiteres PyPI-Paket.
Cairnarvon
1
Dieser Befehl gibt mir "/ Users / zak / MyProject / venv / bin / pip install: Fehler: keine solche Option: --update"
zakdances
4
Es tut mir --upgradenicht --updateleid. Ich habe meinen Beitrag sofort bearbeitet, aber Sie müssen ihn genau zum falschen Zeitpunkt gesehen haben.
Cairnarvon
2
@ Cairnarvon ist der Befehl anders für pip3? Ich versuche es mit pip3, aber es sagt mir nur, dass es nicht gefunden werden kann und beschwert sich dann WIEDER, dass es nicht auf dem neuesten Stand ist ... wenn ich es nicht einmal aktualisieren / aktualisieren kann!
Charlie Parker

Antworten:

929

pipist nur ein PyPI-Paket wie jedes andere; Sie können es verwenden, um sich selbst auf die gleiche Weise zu aktualisieren, wie Sie jedes Paket aktualisieren würden:

pip install --upgrade pip

Unter Windows lautet der empfohlene Befehl :

python -m pip install --upgrade pip
Cairnarvon
quelle
53
Unter Windows hatte ich ein Berechtigungsproblem beim Versuch, pip mithilfe von pip zu aktualisieren. Stattdessen habe ich easy_install verwendet, um ein Upgrade durchzuführen:easy_install pip
bsa
8
Als ich diesen Pip gemacht habe, schien er zu aktualisieren (1.1 -> 1.4), aber wenn ich "pip --version" mache, wird immer noch die alte Version 1.1 angezeigt. Es wurde versucht, die virtuelle Umgebung zu deaktivieren und wieder zu aktivieren, es wird jedoch weiterhin die alte Version angezeigt.
Zitrax
40
Unter Windows ist es wahrscheinlich besser, den folgenden Befehl zu verwenden: um python -m pip install --upgrade pipzu vermeiden, dass pip.exe aus dem Skriptverzeichnis ausgeführt wird.
Bialix
@ Zitrax hast du dieses Problem gelöst? Ich stehe vor dem gleichen Problem.
Mohammad ali baghershemirani
@Mohammadalibaghershemirani Entschuldigung, das ist eine Weile her - kann mich nicht erinnern.
Zitrax
58

Die sicherere Methode besteht darin , pip über ein Python-Modul auszuführen :

python -m pip install -U pip

Unter Windows scheint es ein Problem mit Binärdateien zu geben, die versuchen, sich selbst zu ersetzen. Diese Methode umgeht diese Einschränkung.

Janusz Skonieczny
quelle
9
Dies ist nun, was pip selbst empfiehlt, wenn es eine neuere Version von sich selbst erkennt.
Tephyr
1
Ich glaube, der Grund dafür ist, dass unter einigen Betriebssystemen (Windows) durch direktes Ausführen von pip eine Dateisperre für die ausführbare Datei erstellt werden kann, die eine Aktualisierung verhindern würde. Wenn Sie Python aufrufen und anweisen, das Modul direkt zu laden, vermeiden Sie den Zugriff auf die ausführbare Datei.
jpmc26
Sie müssen die Eingabeaufforderung im Administratormodus ausführen, damit dies funktioniert. Ich habe mehrere andere Vorschläge ausprobiert und nichts hat funktioniert, bis ich das Eingabeaufforderungsfenster im Admin-Modus neu gestartet habe. Dann hat dieser Befehl perfekt funktioniert.
DaveN59
42

In meinem Fall war meine Pip-Version defekt, sodass das Update selbst nicht funktionieren würde.

Fix:

(inside virtualenv):easy_install -U pip
jmoz
quelle
1
Es war auch mein Fall. Ich habe alle anderen Methoden ausprobiert, aber nur diese hilft mir. Vielen Dank !
Levif
Das gleiche gilt auch für Debian. Die Verwendung von Python oder Pip zum Aktualisieren von Pip aus der virtuellen Umgebung heraus würde fehlschlagen, da es sich weigerte, vorhandene Pip außerhalb des Venv zu deinstallieren.
user3748764
Das Ausführen zeigte mir eine Menge Download error on https://pypi.python.org/simple/pip/: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) -- Some packages may not be found!Dinge, die beim Ausführen von --upgrade nicht angezeigt wurden. Und es ist wahrscheinlich der Grund, warum die Installation eines Pip-Pakets fehlschlägt und warum das Upgrade von Pip durch Pip ebenfalls fehlschlägt. SSL scheint defekt zu sein.
Vadorequest
9

Ich habe alle oben unter Debian Jessie erwähnten Lösungen ausprobiert. Sie funktionieren nicht, da nur die neueste Version benötigt wird, die vom Debian-Paketmanager kompiliert wurde. 1.5.6 entspricht Version 6.0.x. Einige Pakete, die pip als Voraussetzungen verwenden, funktionieren nicht als Ergebnis, z. B. spaCy (für die ordnungsgemäße Funktion ist die Option --no-cache-dir erforderlich).

Der beste Weg, um diese Probleme zu lösen, besteht darin, get-pip.py auszuführen, das mit wget, von der Website oder mit curl heruntergeladen wurde:

 wget https://bootstrap.pypa.io/get-pip.py -O ./get-pip.py
 python ./get-pip.py
 python3 ./get-pip.py

Dadurch wird die aktuelle Version installiert, die zum Zeitpunkt des Schreibens dieser Lösung 9.0.1 ist und weit über das hinausgeht, was Debian bietet.

 $ pip --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python2.7/dist-packages (python 2.7)
 $ pip3 --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python3.4/site-packages (python 3.4)
Eamonn Kenny
quelle
2
hilfreich für wenn pip install --upgrade pipfehlgeschlagen
Aneuway
Wenn ich diese Antwort ein paar Mal positiv bewerten könnte, würde ich es tun. Dies löste gerade ein Problem, bei dem pip 9.x mit einem SSL-Fehler fehlschlug, indem auf pip 10.x aktualisiert wurde. Siehe stackoverflow.com/questions/25981703/…
Keith John Hutchison
Nun, wenn Sie es einmal gestimmt haben, werde ich glücklich sein. Meine Antworten stammen normalerweise aus ein oder zwei Stunden Jagd und jahrelanger Erfahrung. Kannst du das nicht für meine Fragen sagen? Leute können wirklich gemein sein! :)
Eamonn Kenny
4

Das Aktualisieren von pip mit ' pip install --upgrade pip ' funktioniert aufgrund des gefürchteten Zertifikatsproblems nicht immer: Bestätigen des SSL-Zertifikats ist ein Problem aufgetreten: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1-Alarmprotokollversion

Ich verwende gerne den einzeiligen Befehl für virtuelle Umgebungen:

curl https://bootstrap.pypa.io/get-pip.py | python -

Oder wenn Sie es boxweit installieren möchten, benötigen Sie

curl https://bootstrap.pypa.io/get-pip.py | sudo python -

Sie können curl ein -s- Flag geben, wenn Sie die Ausgabe beim Ausführen in einem Automatisierungsskript stummschalten möchten.

Rubel
quelle
1

In meinem Fall funktionierte dies über die Terminal-Befehlszeile in Debian Stable

python3 -m pip install --upgrade pip
Prabhakaran KC
quelle
1

Damit dies für mich funktioniert, musste ich über die Python-Eingabeaufforderung (unter WIN10 von VS CODE) einen Drilldown im Python-Verzeichnis durchführen. In meinem Fall befand es sich in meinem Verzeichnis "AppData \ Local \ Programs \ Python \ python35-32". Von dort aus habe ich jetzt den Befehl ausgeführt ...

python -m pip install --upgrade pip

Das hat funktioniert und ich kann loslegen.

Sean
quelle
1

Öffnen Sie die Eingabeaufforderung mit Administratorrechten und wiederholen Sie den Befehl:

python -m pip install --upgrade pip
MRamzan
quelle
4
Ist das nicht dasselbe wie einige der vorhandenen Antworten?
Hkchengrex
Es ist aber so, dass ich das Problem hatte und es behoben wurde, als ich CMD mit Administratorrechten ausführte.
MRamzan
1

Pip Version 10 hat ein Problem. Es wird sich als Fehler manifestieren:

ubuntu@mymachine-:~/mydir$ sudo pip install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

Die Lösung besteht darin, sich in dem Venv zu befinden, den Sie aktualisieren und dann ausführen möchten:

sudo myvenv/bin/pip install --upgrade pip

anstatt nur

sudo pip install --upgrade pip
Calaf
quelle
1

Wenn Sie venv verwenden, führt jedes Update der Pip-Installation zu einem Upgrade des System-Pip anstelle des venv-Pip. Sie müssen auch die Pip-Bootstrapping-Pakete aktualisieren.

  python3 -m pip install --upgrade pip setuptools wheel
dre-hh
quelle
Es gab ein Problem mit Python Mailist oder Pepa. Leider haben alle Parteien die Verantwortung als not my motorollerProblem weggeschoben
dre-hh
0

Ich hatte Python in C: \ Python \ Python36 installiert, also ging ich zur Windows-Eingabeaufforderung und gab "cd C: \ Python \ Python36" ein, um in das richtige Verzeichnis zu gelangen. Dann gab ich "python -m install --upgrade pip" all ein gut!

Walt
quelle
0

Auf meinem Laptop mit Windows 7 ist der richtige Weg, um die neueste Version von pip zu installieren:

python.exe -m pip install --upgrade pip
MiloshB
quelle
0

Einzeiliges Python-Programm
Einzeiliges Der beste Weg, den ich gefunden habe, besteht darin, ein einzeiliges Programm zu schreiben, das das offizielle get-pip-Skript herunterlädt und ausführt. Siehe unten für den Code.

In den offiziellen Dokumenten wird empfohlen, das get-pip-Skript mit curl herunterzuladen. Da ich jedoch unter Windows arbeite und curl nicht installiert habe, bevorzuge ich die Verwendung von Python selbst zum Herunterladen und Ausführen des Skripts.

Hier ist das einzeilige Programm, das mit Python 3 über die Befehlszeile ausgeführt werden kann:

python -c "import urllib.request; exec(urllib.request.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Diese Zeile enthält das offizielle Skript "get-pip.py" gemäß den Installationshinweisen und führt das Skript mit dem Befehl "exec" aus.

Für Python2 würden Sie "urllib.request" durch "urllib2" ersetzen:

python -c "import urllib2; exec(urllib2.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Vorsichtsmaßnahmen
Es ist erwähnenswert, dass das blinde Ausführen eines Python-Skripts von Natur aus gefährlich ist. Aus diesem Grund wird in den offiziellen Anweisungen empfohlen, das Skript herunterzuladen und vor dem Ausführen zu überprüfen.

Das heißt, viele Leute inspizieren den Code nicht wirklich und führen ihn einfach aus. Dieses einzeilige Programm macht das einfacher.

Faust der Wut
quelle
0

Ich hatte ein ähnliches Problem mit einem Himbeer-Pi.

Das Problem war, dass http SSL erfordert und ich es zwingen musste, https zu verwenden, um diese Anforderung zu umgehen.

sudo pip install --upgrade pip --index-url=https://pypi.python.org/simple

oder

sudo pip-3.2 --upgrade pip --index-url=https://pypi.python.org/simple/
user391339
quelle
0

Ich war in einer ähnlichen Situation und wollte das urllib3-Paket aktualisieren. Was für mich funktioniert hat war:

pip3 install --upgrade --force-reinstall --ignore-installed urllib3==1.25.3
Avik Aggarwal
quelle
-2

Sehr einfach. Laden Sie einfach pip von herunter https://bootstrap.pypa.io/get-pip.py . Speichern Sie die Datei in einem Forlder oder Dekstop. Ich habe die Datei auf meinem D-Laufwerk gespeichert. Navigieren Sie dann an Ihrer Eingabeaufforderung zu dem Ordner, in den Sie pip heruntergeladen haben. Dann tippen Sie dort

python -get-pip.py

Screenshot der Pip-Installation

Prasad K.
quelle