Как обновить / обновить пакет с помощью pip?


171

Как обновить пакет с помощью pip? те не работают

pip update
pip upgrade

Я знаю, что это простой вопрос, но он необходим, так как его не так легко найти ( документация по пунктам не появляется, а другие вопросы из-за переполнения стека актуальны, но не совсем об этом)

Ответы:


280

Путь

sudo pip install [package_name] --upgrade

или короче

sudo pip install [package_name] -U

sudo попросит ввести пароль root для подтверждения действия.

Если у вас нет пароля пользователя root (если вы не являетесь администратором), вы, вероятно, должны работать с virtualenv, а затем сбросить sudo:

pip install [package_name] --upgrade

2
Как pip install --helpсказал: -U, --upgrade Upgrade all specified packages to the newest available version.. Так должно быть в верхнем регистре -U, а не -u.
Питер Лян

25
Почему такой распространенный вариант не показан, когда вы делаете pip --help, для меня загадка ...
Хаски

3
@Husky - Да, в том же духе, почему они не просто делают upgradeкоманду, которая делает то, что вы видите в ответе - хороший вопрос. (Это означает, что если вы используете «upgrade», он просто делает то, что делает install+ --upgrade.) Своего рода «псевдоним».
bshea

10

Для неспецифического пакета и более общего решения вы можете проверить pip-review - инструмент, который проверяет, какие пакеты могут / должны быть обновлены.

$ pip-review --interactive
requests==0.14.0 is available (you have 0.13.2)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit y

3
Хотя это не дает прямого ответа на вопрос, это может быть то, что на самом деле ищут некоторые люди, когда ищут это сообщение.
Боргр

8

Скрипт tl; dr для обновления всех установленных пакетов

Если вы хотите обновить один пакет, обратитесь к @ borgr - х ответа . Я часто нахожу необходимым или, по крайней мере, приятным, чтобы обновить все мои пакеты сразу. В настоящее время pip изначально не поддерживает это действие, но с помощью сценариев sh это достаточно просто. Вы используете pip list, awk(или cutи tail), и команду подстановки. Мой обычный однострочный:

for i in $(pip list -o | awk 'NR > 2 {print $1}'); do sudo pip install -U $i; done

Это попросит пароль root. Если у вас нет доступа к этому,--user может пригодиться опция pipили virtualenv .


7
import subprocess as sbp
import pip
pkgs = eval(str(sbp.run("pip3 list -o --format=json", shell=True,
                         stdout=sbp.PIPE).stdout, encoding='utf-8'))
for pkg in pkgs:
    sbp.run("pip3 install --upgrade " + pkg['name'], shell=True)

Сохранить как xx.py
Затем запустите Python3 xx.py
Среда: python3.5 + pip10.0 +


Мне нравится это решение. Я добавил печать, чтобы показать имя пакета во время обновления:print('updating ', pkg['name'])
pvoj

4

Чтобы обновить pip для Python3.4 +, вы должны использовать pip3 следующим образом:

sudo pip3 install pip --upgrade

Это обновит пип, расположенный по адресу: /usr/local/lib/python3.X/dist-packages

В противном случае, чтобы обновить pip для Python2.7, вы должны использовать pip следующим образом:

sudo pip install pip --upgrade

Это обновит пип, расположенный по адресу: /usr/local/lib/python2.7/dist-packages


7
Это не то, что спросил ОП. Он спрашивает, как обновить конкретный пакет, а не сам PIP.
commadelimited

тем не менее, кажется, было бы полезно иметь здесь среди этих других ответов
ух,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.