Могу ли я заставить pip переустановить текущую версию?

507

Я сталкивался с ситуациями, когда текущая версия пакета не работает и требует переустановки. Но pip install -Uне буду касаться пакета, который уже обновлен. Я вижу, как принудительно выполнить переустановку, сначала удалив (с помощью pip uninstall), а затем установив, но есть ли способ просто принудительно «обновить» до номинально текущей версии за один шаг?

Оромэ
источник
для тех, кто хочет переустановить pip it self (если по какой-то причине он перестал работать;)), ответ можно найти в этом SO q & a
ns от

Ответы:

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

При обновлении переустановите все пакеты, даже если они уже обновлены.

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

Игнорировать установленные пакеты (вместо этого переустановить).

KGO
источник
1
Любой способ вызвать перезапись при использовании --target = flag? ни один из них не работал для меня. Я получаю путь назначения уже существует ошибка.
Радтек
@KeeganQuinn Как вы думаете, это то, что Каран имел в виду под "При обновлении" ...? Я так полагаю. Но ваши разъяснения, безусловно, помогают мне.
Красный горох
Что если я захочу внести изменения в zipline, который устанавливается в процессе pip install pipeline-live, и просто получить мои изменения в zipline?
gseattle
В том числе, --upgradeкогда --force-reinstallиспользуется, в пипс 10.0 не требуется, к вашему сведению: github.com/pypa/pip/issues/1139
cjerdonek
1
@mrgloom The using cachedjust означает, что он использует исходные файлы, которые были кэшированы при последней установке. Для принудительной повторной загрузки используйте --no-cache-dirфлаг.
lcnittl
181

Возможно, вы захотите иметь все три варианта: --upgradeи --force-reinstallобеспечивает переустановку, --no-depsизбегая переустановки зависимостей.

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

В противном случае вы можете столкнуться с проблемой, что pip начинает перекомпилировать Numpy или другие большие пакеты.

Финн Оруп Нильсен
источник
1
Это также работает для автономной установки, в то время как исключенный ответ - нет.
orodbhen
4
Это лучшее решение для пакетов с большим количеством зависимостей, которые не нужно переустанавливать.
Ассил Ксикси
1
sudoбыло решающим в моем случае.
mrgloom
1
Зачем нам нужно, --upgradeкогда мы используем --force-reinstall?
mrgloom
@ FinnÅrupNielsen, почему он должен обновить текущую версию? как я понимаю, здесь мы хотим переустановить пакет. Что делать, если <package-name>==<package-version>используется формат?
mrgloom
33

Если вы хотите переустановить пакеты, указанные в файле needs.txt, без обновления, просто переустановите конкретные версии, указанные в файле needs.txt:

pip install -r requirements.txt --ignore-installed
Дэви
источник
29
--force-reinstall

не вызывает принудительную переустановку с использованием python2.7 с pip-1.5

Я должен был использовать

--no-deps --ignore-installed
anemes
источник
20
Вы должны указать --upgradeв дополнение к --force-reinstall, или это не будет иметь никакого эффекта.
Киган Куинн
6

Если у вас есть текстовый файл с множеством пакетов, вам нужно добавить флаг -r

pip install --upgrade --no-deps --force-reinstall -r requirements.txt
Даниил
источник
5

В случае, если вам нужно принудительно переустановить сам pip , вы можете сделать:

python -m pip install --upgrade --force-reinstall pip
Хорхе Крибб
источник