Як оновити пакет Python?


234

Я запускаю Ubuntu 9:10 і встановлюється пакет під назвою M2Crypto (версія 0,19.1). Мені потрібно завантажити, скласти та встановити останню версію пакету M2Crypto (0.20.2).

У пакеті 0.19.1 є файли у багатьох місцях, включаючи (/ usr / share / pyshared та /usr/lib/pymodules.python2.6).

Як я можу повністю видалити версію 0.19.1 зі своєї системи перед встановленням 0.20.2?

Відповіді:


54

Можливо, ви захочете зазирнути в менеджер пакунків Python, як pip . Якщо ви не хочете використовувати менеджер пакунків Python, ви повинні мати можливість завантажити M2Crypto та створити / зібрати / встановити на старій установці.


1
Дякую. Те, що ви сказали, працювало. Я створив і встановив 0.20.2, не потребуючи видалення 0.19.1.
thompson

461

Найкращий спосіб, який я знайшов, - це запустити цю команду з терміналу

sudo pip install [package_name] --upgrade

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


Примітка. Деякі користувачі можуть замість цього встановити pip3. У такому випадку використовуйте

sudo pip3 install [package_name] --upgrade

4
І якщо ви використовуєте проксі без автентифікації: sudo pip install [package] --upgrade --proxy = address: port
lmsasu

32
Я прийшов сюди за цією відповіддю. Я намагався pip updateі pip upgradeбув у відчаї, поки не побачив --upgradeтут. Чому вони не додають pip upgradeкоманду?
Ларс Блюмберг

9
Це дійсно добре прихована особливість.
otocan

1
Для користувачів Windows: sudoне потрібно.
Stevoisiak

2
Це має бути відповідь №1
Корд Калдемайер

48

Щоб автоматично оновити застарілі пакети (які були встановлені за допомогою pip), просто запустіть сценарій нижче,

pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

Тут pip list --outdatedбуде перераховано всі застарілі пакети, а потім ми передамо їм awk, тому він буде друкувати лише імена. Тоді, $(...)воля зробить її змінною, а потім, все робиться автоматично. Переконайтеся, що у вас є дозволи. (Просто поставте sudoперед pip, якщо ви плутаєтесь) Я б написав сценарій на ім'я, pip-upgrade Код нижче

#!/bin/bash
sudo pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

Потім використовуйте наступні рядки сценарію, щоб підготувати його:

sudo chmod +x pip-upgrade
sudo cp pip-upgrade /usr/bin/

Тоді просто натисніть pip-upgradeі вуаляйте!


У мене з’явилася синтаксична помилка, яка вказує на останню дужку у:awk: cmd. line:1: { print $1 })
TT--

7
@TT Новіші версії pipвимагають використовувати --format=legacyопцію, тобто pip list --outdated --format=legacy. Також FYI всі: сліпе оновлення всіх модулів через pip може бути досить небезпечним для багатьох Linux-дистрибутивів. Багато з них надають конкретні модулі python через пакунки distro, а деякі з цих дистрибутивів (зокрема RHEL) можуть зламатись, якщо ви оновлюєте лайно ... не кажучи вже про те, що якщо ви оновлюєтесь через pip, дистрибутивні пакети можуть відновити зміни майбутнє оновлення.
rsaw

дякую @rsaw Він має рацію, вам слід запускати свої команди з допомогою опції --user
Fahim Ferdous

1
Мені подобається ця відповідь, хоча я розумію небезпеку автоматичного оновлення всього. У будь-якому випадку, оскільки застаріла застара в піп-версії 19.0 pip встановити $ (список запитів - актуалізований --format = стовпці | grep -v "Пакет" | grep -v - ---- | awk '{print $ 1}') - -поновлення
mike v

2
Для роботи над Ubuntu 18.04 venv адаптуйте так:pip install $(pip list --outdated | tail +3 | grep -v sdist | awk '{ print $1 }') --upgrade
Олександр Ремеш

34
  1. Через командний рядок windows запустіть: pip list --outdated Ви отримаєте список застарілих пакетів.
  2. Запустити: pip install [package] --upgrade оновить [package]попередню версію та видалить її.

Щоб оновити pip:

py -m pip install --upgrade pip

Знову ж таки, це видалить попередню версію pip та встановить останню версію pip.


29
  • Спосіб 1: Оновіть вручну по черзі

pip install package_name -U
  • Спосіб 2: Оновіть все одразу (відмова з високою ймовірністю, якщо деякий пакет не вдасться оновити

pip install $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1) --upgrade
  • Спосіб 3: Оновлення по черзі за допомогою циклу

for i in  $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1); do pip install $i --upgrade; done


9

Використовуйте pipupgrade !

$ pip install pipupgrade
$ pipupgrade --latest --interactive

pipupgrade допомагає оновити вашу систему, локальний або пакунки з requirements.txtфайлу! Він також вибірково оновлює пакети, які не порушують змін. Сумісний з Python2.7 +, Python3.4 + та pip9 +, pip10 +, pip18 +.

введіть тут опис зображення

ПРИМІТКА: Я автор інструменту.


1
Щоразу, коли я використовую цей інструмент, я отримую відповідь "[0; 93mChecking ... [0m", і він не робить нічого. Чи неправильно я його використовую?
Фіолетовий

Я використовую Mac з MacPorts. З Python 3.7 pipupgrade працював лише для 5 з 50 пакетів, для решти мені довелося використовувати це: для i in pip3.7 list --outdated | sed -n -e '3,$s/ .*//p'; зробити pip3.7 install - оновити $ i; виконано
Майкл Дрехер

4

Як був встановлений пакет спочатку? Якби це було через apt, ви могли просто зробитиapt-get remove python-m2crypto

Якщо ви встановили це через easy_install, я впевнений, що єдиний спосіб - це просто виправити файли під lib, наданими спільними можливостями тощо.

Моя рекомендація в майбутньому? Використовуйте щось на зразок pip для встановлення ваших пакетів. Крім того, ви можете шукати щось, що називається virtualenv, щоб ваші пакунки зберігалися на основі середовища, а не виключно на root.

З Pip це досить просто:

pip install m2crypto

Але ви також можете встановити з git, svn тощо репозиції з правильною адресою. Це все пояснено в документації на піп


Те, як він описує, де встановлені файли, вказує на те, що пакет був встановлений за допомогою менеджера пакунків apt - оскільки (на Debian AFAIK) apt встановив би пакети python у двох вказаних ним місцях / / share / pyshared / .. призначений для спільного коду для різних версій та / usr / lib / .. для окремих версій. просто встановити / pip, з іншого боку, буде використовувати / usr / local / lib / .. - так, як ви вже сказали, - просто apt-get delete би зробив його.
Базель Шишані


3

У зошиті Юптьє є дуже простий спосіб

!pip install <package_name> --upgrade

Отже, потрібно просто замінити фактичну назву пакета.


2

Отримайте всі застарілі пакети та створіть пакетний файл із наступними командами pip install xxx - Upgrade для кожного застарілого пакету

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