[Python] Обновление апгрейда в Amazon Linux


Answers

Некоторое время боролся с этим. Вот что я нашел:

  • ec2_user находит исполняемый файл pip , но имеет ошибку импорта модуля из-за того, что other не имеют прав на чтение / выполнение в папках pip в папке /usr/local/lib/python2.7/site-packages . Это на самом деле все в порядке, так как в большинстве случаев pip установкой пакетов не выполняются, если не выполняются как root .
  • sudo не может найти pip .
  • Ввод root с помощью sudo su - позволяет работать без проблем.

Причина, по которой sudo pip перестает работать после обновления, заключается в том, что исполняемый файл (или символическая ссылка) удаляется из /usr/bin . Однако остается файл с именем pip-27 , который содержит следующее:

#!/usr/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==6.1.1','console_scripts','pip2.7'
__requires__ = 'pip==6.1.1'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pip==6.1.1', 'console_scripts', 'pip2.7')()
    )

Итак, именно здесь происходит наша ошибка, так как обновление явно не очищает этот файл. Не совсем понятно, где происходит pip имени от pip до pip-2.7 .

Как упоминалось в другом ответе, pip теперь существует в /usr/local/bin после обновления, который больше не находится в безопасном пути sudo . Вы можете добавить этот путь к переменной secure_path , выполнив sudo visudo . Другая альтернатива, если вы предпочитаете не добавлять этот путь к вашему secure_path - это сделать символическую ссылку на новый исполняемый файл pip в /usr/bin .

Question

Я хотел развернуть мое приложение Python на Amazon Linux AMI 2015.09.1, которое имеет Python2.7 (по умолчанию) и pip (6.1.1). Затем я обновил пип с помощью команды:

sudo pip install -U pip

Тем не менее, он был сломан и показал сообщение, когда я пытался установить пакеты:

pkg_resources.DistributionNotFound: pip==6.1.1

Я узнал, что pip удаляет предыдущие файлы, расположенные в /usr/bin/ , и устанавливает новый в /usr/local/bin . Таким образом, я попытался указать местоположение с помощью команды:

sudo pip install -U --install-option="--prefix='/usr/bin'" pip

Тем не менее, он все еще установил новый в /usr/local/bin . В дополнение к этому, pip не может работать хорошо с sudo хотя он успешно установлен. Сообщение об ошибке:

sudo: pip2.7: command not found

Есть ли способ правильно управлять пипсом?




После битвы с этим в течение нескольких часов и чтения комментариев

which pip дал / usr / bin / pip, но фактический пип был расположен в / usr / local / bin / pip из-за обновления апгрейда и очистки не было завершено

Таким образом, удаление пипса в / usr / bin /

sudo rm / usr / bin / pip

а также добавление нового пункта в ваш путь экспорта

vim ~ / .bash_profile

PATH = $ PATH: $ HOME / бен: / USR / местные / бен

терминал выхода и логин назад

which pip должен дать / usr / local / bin / pip

pip install --upgrade pip



Я думаю, вы не установили пакет pythonXX-pip .

Я обновил свою версию до Python3.4, эти команды работают для меня.

sudo su
yum install python34
yum install python34-pip