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

171

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

pip update
pip upgrade

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

borgr
источник

Ответы:

280

Путь

sudo pip install [package_name] --upgrade

или короче

sudo pip install [package_name] -U

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

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

pip install [package_name] --upgrade
borgr
источник
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 +

Fofdsf
источник
Мне нравится это решение. Я добавил печать, чтобы показать имя пакета во время обновления: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
тем не менее, кажется, было бы полезно иметь здесь среди этих других ответов
ух,