Czy mogę zmusić PIP do ponownego zainstalowania bieżącej wersji?

507

Natknąłem się na sytuacje, w których obecna wersja pakietu wydaje się nie działać i wymaga ponownej instalacji. Ale pip install -Unie dotknie pakietu, który jest już aktualny. Widzę, jak wymusić ponowną instalację, najpierw odinstalowując (z pip uninstall), a następnie instalując, ale czy istnieje sposób, aby po prostu wymusić „aktualizację” do nominalnie aktualnej wersji w jednym kroku?

orome
źródło
dla tych, którzy chcą ponownie zainstalować PIP It samodzielnie (jeśli z jakiegoś powodu przestał działać;)), odpowiedź można znaleźć w tym SO
pytania

Odpowiedzi:

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

Podczas aktualizacji zainstaluj ponownie wszystkie pakiety, nawet jeśli są już aktualne.

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

Zignoruj ​​zainstalowane pakiety (zamiast tego ponowna instalacja).

KGo
źródło
1
W jakikolwiek sposób wymusić zastąpienie przy użyciu --target = flaga? żaden z nich nie działał dla mnie. Rozumiem, że ścieżka docelowa już istnieje błąd.
radtek
@KeeganQuinn, czy myślisz, że właśnie to Karan miał na myśli mówiąc „Podczas aktualizacji” ...? Tak przypuszczam. Ale twoje wyjaśnienie z pewnością mi pomaga.
The Red Pea
Co jeśli chcę dokonać zmiany w linii zipline, która jest instalowana w trakcie pip install pipeline-live, i po prostu odebrać swoją zmianę w zipline?
gseattle
Włączenie, --upgradekiedy --force-reinstalljest używany, nie powinno być potrzebne od pip 10.0, FYI: github.com/pypa/pip/issues/1139
cjerdonek
1
@mrgloom using cachedOznacza to, że używa plików źródłowych, które były buforowane przy ostatniej instalacji. Aby wymusić ponowne pobranie, użyj --no-cache-dirflagi.
lcnittl
181

Możesz mieć wszystkie trzy opcje: --upgradei --force-reinstallzapewnia ponowną instalację, --no-depsunikając przy tym ponownych zależności.

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

W przeciwnym razie możesz napotkać problem polegający na tym, że pip zaczyna rekompilować Numpy lub inne duże pakiety.

Finn Årup Nielsen
źródło
1
Działa to również w przypadku instalacji offline, podczas gdy wyjątek nie.
orodbhen
4
Jest to lepsze rozwiązanie dla pakietów z dużą liczbą zależności, które nie wymagają ponownej instalacji.
Assil Ksiksi
1
sudobyło w moim przypadku kluczowe.
mrgloom
1
Dlaczego potrzebujemy, --upgradekiedy korzystamy --force-reinstall?
mrgloom
@ FinnÅrupNielsen, dlaczego powinien zaktualizować bieżącą wersję? jak rozumiem tutaj, chcemy ponownie zainstalować pakiet. Co jeśli <package-name>==<package-version>używany jest format?
mrgloom
33

Jeśli chcesz ponownie zainstalować pakiety określone w pliku wymagania.txt, bez aktualizacji, po prostu zainstaluj ponownie określone wersje określone w pliku wymagania.txt:

pip install -r requirements.txt --ignore-installed
Davy
źródło
29
--force-reinstall

nie wydaje się wymuszać ponownej instalacji przy użyciu python2.7 z pip-1.5

Musiałem użyć

--no-deps --ignore-installed
zawilce
źródło
20
Musisz podać --upgradedodatkowo --force-reinstall, inaczej nie przyniesie to żadnego efektu.
Keegan Quinn
6

Jeśli masz plik tekstowy z dużą ilością pakietów, musisz dodać flagę -r

pip install --upgrade --no-deps --force-reinstall -r requirements.txt
Daniel
źródło
5

W przypadku, gdy musisz wymusić ponowną instalację samego pipa , możesz:

python -m pip install --upgrade --force-reinstall pip
Jorge Cribb
źródło