Як оновити pip до останнього?


51

Я встановив pip, використовуючи get-pip.pyпісля цього, pip freezeвикидає нижче помилку

Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/freeze.py", line 74, in run
    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 299, in from_dist
    assert len(specs) == 1 and specs[0][0] == '=='
AssertionError

Storing debug log for failure in /home/simon/.pip/pip.log

Тому я перевірив, 1.7 є останнім. Якщо я дотримувався нижче кроків, і це не оновлюється ... Допоможіть мені тут ...

simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip install -U pip
Downloading/unpacking pip
  Downloading pip-7.1.2-py2.py3-none-any.whl (1.1MB): 1.1MB downloaded
Installing collected packages: pip
Successfully installed pip
Cleaning up...
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)

1
sudo -H pip3 install
оновлення

Відповіді:


54

Зазвичай я просто виконую наступні команди для оновлення як pip2(= pipза замовчуванням), так і pip3:

sudo -H pip3 install --upgrade pip
sudo -H pip2 install --upgrade pip

Ви повинні переконатися, що оновлено версію (для Python 2 або 3), на яку ви хочете реагувати на команду pipбез числа.

Також зауважте, що це зберігає старі пакуються версії, встановлені через apt-getбудь-який інший менеджер пакунків, але додає нові версії, які не мають нічого спільного з системними пакетами. Переважними будуть pipвстановлені пакети, але не слід видаляти і apt-getвстановлені пакети, оскільки менеджер пакунків не може знати, що будь-яка pipверсія встановлена ​​в іншому випадку.


3
Чому важливо влаштуватися вдома sudo -H?
Лео Леопольд Герц 준영

11
@Masi Тому що pipхоче записати свої завантажені файли кудись, щоб їх кешувати. Він реалізований для розміщення їх у підпапках домашнього каталогу поточного користувача. Якщо ви запускаєте його без -Hцього, він скаржиться, оскільки він виявляє, що поточний домашній каталог (звичайний користувач) не відповідає користувачеві, якому він працює (root). Якщо вона записувала свої файли у свій домашній каталог, вони матимуть root та більше не будуть доступні для вас як звичайний користувач. Тому він не кешує файли в цьому випадку. Не страшно опускати так, -Hяк pipце виявляє і попереджає.
Командир байт

1
Чому обидві команди просто перезаписують pipкоманду? Коли я оновлюю, pip2вона не оновлює pip2команду, просто pip.
Yep_It's_Me

@ Yep_It's_Me Це тому, що pipстосується тієї версії python, яку ви викликаєте. і тому його команди pip2& pip3відповідно викликають відповідну версію python для оновлення pip. Чи має це сенс?
JayRizzo

27

Я думаю, що

pip install --upgrade pip

команда більше не працює належним чином. Правильна команда повинна бути:

  • для Python 3:

    python3 -m pip install --upgrade pip
  • для Python 2:

    python2 -m pip install --upgrade pip

Gg @ david-foerster
JayRizzo

У Linux просто використовуйте pip install -U pip(див. Оновлення піп )
Eido95,

1
У мене виникли проблеми під час оновлення піп-файлу від root (на зображенні Докера), і це спрацювало як шарм.
Крістіан Рамон-Кортес

Працював як шарм на монетному дворі Linux
HelloWorld

5

Перейдіть на цей веб-сайт https://pypi.python.org/pypi/pip

скопіювати (або) завантажити джерело посилання (закінчується у .tar.gz)

для 9.0.1 посилання https://pypi.python.org/pypi?:action=show_md5&digest=35f01da33009719497f01a4ba69d63c9

процедура установки

wget //link goes here
tar -xzvf pip-9.0.1.tar.gz
cd pip-9.0.1
sudo python3 setup.py install

версію слід змінити на останню версію, а посилання можна оновити за допомогою посилання останньої версії

це має працювати


це єдине, що працювало для мене, оскільки все інше потребує підключення до сервера з оболонки, яка знову виходить з ладу з тією ж помилкою.
Алок Раджасукумаран


1

Я думаю, що варто згадати, що те, що я пояснюю нижче, - це якщо ви очікуєте, що pip вкаже на Python 2, а pip3 - на Python 3. Причина, про яку я згадую, полягає в тому, що коли ви оновлюєте pip3, вона також приймає команду pip як Ну. Це дещо дивна умова, тому що за замовчуванням python вказує на 2.x, а python3 - на 3.x. Це сумно...

Якщо ви хочете, щоб на одній машині співіснували останні версії python 2.x pip та python 3.x pip3 (використовуючи pip для 2.x та pip3 для 3.x), вам потрібно зробити наступне:

sudo apt-get install python-pip python3-pip --yes
sudo python3 -m pip install pip --upgrade --force
sudo python -m pip install pip --upgrade --force # this line associates pip with Python 2

Інші відповіді, надані іншими, не згадують, що після запуску sudo pip3 встановити pip --upgrade, ви закінчите команду pip, встановивши пакети в каталогах python 3.x замість каталогів python 2.x.

Частина мене вважає, що нам слід просто залишити pip після оновлення pip3 (навіть якщо він pip -> pip3), але там є небезпека, що люди вже очікують, що піп функціонує як python - обидва вказують на python 2.x. Іншими словами, люди, ймовірно, навчені використовувати pip / python для python 2.x так само, як вони навчені використовувати pip3 / python3 для python 3.x.


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