Як оновити / оновити пакет за допомогою pip?


171

Який спосіб оновити пакет за допомогою pip? ті не працюють:

pip update
pip upgrade

Я знаю, що це просте запитання, але воно потрібне, оскільки його знайти не так просто ( документація з протоколом не з'являється, а інші питання, пов'язані із переповненням стека, є актуальними, але не зовсім про це)

Відповіді:


280

Шлях є

sudo pip install [package_name] --upgrade

або коротше

sudo pip install [package_name] -U

sudo попросить ввести ваш кореневий пароль для підтвердження дії.

Якщо у вас немає кореневого пароля (якщо ви не адміністратор), ви, ймовірно, повинні працювати з 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команду, яка виконує те, що ви бачите у відповіді - це гарне запитання. (Значить, якщо ви використовуєте "оновлення", він просто робить те, що робить 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
Хоча це не відповідає на питання безпосередньо, можливо, деякі люди насправді шукають, шукаючи це повідомлення.
borgr

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

Тут буде запропоновано пароль для кореня. Якщо у вас немає доступу до цього, --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.
комедонімітовано

тим не менше, здається, було б корисно мати тут серед цих інших відповідей
uhoh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.