Kann ich pip zwingen, die aktuelle Version neu zu installieren?

507

Ich bin auf Situationen gestoßen, in denen eine aktuelle Version eines Pakets anscheinend nicht funktioniert und eine Neuinstallation erfordert. Berührt pip install -Uaber kein Paket, das bereits aktuell ist. Ich sehe, wie man eine Neuinstallation erzwingt, indem man zuerst (mit pip uninstall) deinstalliert und dann installiert. Aber gibt es eine Möglichkeit, ein "Update" auf eine nominell aktuelle Version in einem einzigen Schritt zu erzwingen?

orome
quelle
Für diejenigen, die pip it selbst neu installieren möchten (wenn es aus irgendeinem Grund nicht mehr funktioniert;)), finden Sie die Antwort in diesem SO q & a
nsof

Antworten:

744
pip install --upgrade --force-reinstall <package>

Installieren Sie beim Upgrade alle Pakete neu, auch wenn sie bereits aktuell sind.

pip install -I <package>
pip install --ignore-installed <package>

Ignorieren Sie die installierten Pakete (stattdessen neu installieren).

KGo
quelle
1
Gibt es eine Möglichkeit, ein Überschreiben zu erzwingen, wenn --target = flag verwendet wird? Nichts davon hat bei mir funktioniert. Ich bekomme den Zielpfad bereits Fehler vorhanden.
Radtek
@KeeganQuinn Glaubst du, das hat Karan mit "Beim Upgrade" gemeint ...? Ich gehe davon aus. Aber Ihre Klarstellung hilft mir sicherlich.
Die rote Erbse
Was ist, wenn ich eine Änderung an der Zipline vornehmen möchte, die gerade installiert wird pip install pipeline-live, und einfach meine Änderung an der Zipline übernehmen möchte?
Gseattle
Einschließlich des --upgradeZeitpunkts --force-reinstallder Verwendung sollte ab Pip 10.0 nicht mehr benötigt werden. Zu
Ihrer Information
1
@mrgloom Das using cachedbedeutet nur, dass Quelldateien verwendet werden, die bei der letzten Installation zwischengespeichert wurden. Verwenden Sie das --no-cache-dirFlag, um einen erneuten Download zu erzwingen .
lcnittl
181

Möglicherweise möchten Sie alle drei Optionen haben: --upgradeund --force-reinstallstellt die Neuinstallation sicher, während --no-depsdie Neuinstallation von Abhängigkeiten vermieden wird.

$ sudo pip install --upgrade --no-deps --force-reinstall <packagename>

Andernfalls könnte das Problem auftreten, dass pip Numpy oder andere große Pakete neu kompiliert.

Finn Årup Nielsen
quelle
1
Dies funktioniert auch bei Offline-Installationen, während die ausgenommene Antwort dies nicht tut.
Orodbhen
4
Dies ist eine bessere Lösung für Pakete mit einer großen Anzahl von Abhängigkeiten, die nicht neu installiert werden müssen.
Assil Ksiksi
1
sudowar in meinem Fall entscheidend.
Mrgloom
1
Warum brauchen --upgradewir, wenn wir verwenden --force-reinstall?
Mrgloom
@ FinnÅrupNielsen warum sollte es die aktuelle Version aktualisieren? Soweit ich weiß, möchten wir das Paket neu installieren. Was ist, wenn das <package-name>==<package-version>Format verwendet wird?
Mrgloom
33

Wenn Sie Pakete, die in einer Datei "resources.txt" angegeben sind, ohne ein Upgrade neu installieren möchten, installieren Sie einfach die in der Datei "resources.txt" angegebenen spezifischen Versionen neu:

pip install -r requirements.txt --ignore-installed
Davy
quelle
29
--force-reinstall

scheint die Neuinstallation mit python2.7 mit pip-1.5 nicht zu erzwingen

Ich musste verwenden

--no-deps --ignore-installed
Anemes
quelle
20
Sie müssen angeben , --upgradezusätzlich zu --force-reinstall, oder es wird keine Auswirkungen haben.
Keegan Quinn
6

Wenn Sie eine Textdatei mit vielen Paketen haben, müssen Sie das Flag -r hinzufügen

pip install --upgrade --no-deps --force-reinstall -r requirements.txt
Daniel
quelle
5

In dem Fall, dass Sie die Neuinstallation von pip selbst erzwingen müssen, können Sie Folgendes tun:

python -m pip install --upgrade --force-reinstall pip
Jorge Cribb
quelle