Я испортил системную версию Python Pip на Ubuntu 12.10

Я хотел обновить pip в моей основной установке Python, в частности, чтобы получить команду list. Что также включает в себя возможность обновления списков.

Итак, я побежал:

sudo pip install --upgrade pip

Все выглядело хорошо при установке, но затем я пошел запустить pip и получил следующее: (конец установки включен, если это помогает)

Installing pip script to /usr/local/bin
    Installing pip-2.7 script to /usr/local/bin
Successfully installed pip
Cleaning up...
tom@tom-sam:~$ pip list -o
bash: /usr/bin/pip: No such file or directory
tom@tom-sam:~$ pip
bash: /usr/bin/pip: No such file or directory

В какой-то степени очевидно, что я под кайфом, так как это моя системная установка python ... Я прочитал здесь несколько ответов, но не смог определить самое простое исправление.


person dartdog    schedule 26.04.2013    source источник
comment
Вы пробовали переустановить пакет python-pip? Я считаю, что он предоставляет программу / usr / bin / pip.   -  person unutbu    schedule 26.04.2013
comment
вместо вызова pip вы пробовали pip-2.7. Иногда нарушается просто символическая ссылка.   -  person Ketouem    schedule 26.04.2013
comment
pip-2.7 работает, как мне исправить, чтобы он просто попал с pip. Вот как мне исправить символическую ссылку? Я все еще начинаю получать символические ссылки :-)   -  person dartdog    schedule 26.04.2013
comment
unutbu с помощью какой команды?   -  person dartdog    schedule 26.04.2013
comment
На самом деле я попытался переустановить pip с помощью easy_install, без помощи ..   -  person dartdog    schedule 26.04.2013
comment
Ах, я нашел символическую ссылку pip в / usr / bin и говорит, что она не работает, поскольку эту ссылку нельзя использовать, потому что ее целевой pip-2.7 не существует Как исправить?   -  person dartdog    schedule 26.04.2013
comment
О чем which pip-2.7 сообщает?   -  person wkl    schedule 26.04.2013
comment
Какой pip-2.7 /usr/local/bin/pip-2.7, но я не вижу файла pip-2.7 в / usr / bin   -  person dartdog    schedule 26.04.2013
comment
Похоже, что pip-2.7 в /usr/bin был, возможно, удален при установке, которую вы запустили (или что-то еще удалило его). Вы можете воссоздать символическую ссылку в /usr/local/bin с помощью ln -s /usr/local/bin/pip-2.7 /usr/local/bin/pip, а затем удалить pip из /usr/bin.   -  person wkl    schedule 26.04.2013
comment
не работает? sudo ln -s /usr/local/bin/pip-2.7 / usr / local / bin / pip ln: не удалось создать символическую ссылку `/ usr / local / bin / pip ': файл существует tom @ tom-sam: ~ $   -  person dartdog    schedule 26.04.2013
comment
В этом случае, я полагаю, ваш /usr/bin имеет приоритет над /usr/local/bin в вашем PATH. Вы можете сделать sudo rm /usr/bin/pip, чтобы удалить там неработающую символическую ссылку. После этого pip должен работать, поскольку символическая ссылка в /usr/local/bin уже существует.   -  person wkl    schedule 26.04.2013
comment
блин, я просто удалил его и все еще получаю bash: / usr / bin / pip: нет такого файла или каталога   -  person dartdog    schedule 26.04.2013
comment
Это сделало это sudo ln -s /usr/local/bin/pip-2.7 / usr / bin / pip   -  person dartdog    schedule 26.04.2013


Ответы (6)


У меня такое же сообщение было на linux.

/usr/bin/pip: No such file or directory

но затем проверил, какой пункт вызывается.

$ which pip
/usr/local/bin/pip 

На моей машине debian wheezy я исправил это, выполнив следующие действия ...

/usr/local/bin/pip uninstall pip  
apt-get remove python-pip  
apt-get install python-pip  

====================================
Это произошло из-за неправильной установки с apt-get и обновления с pip install -U pip.

Они также установили библиотеки в 2 разных местах, что вызвало у меня проблемы.

/usr/lib/python2.7/dist-packages  
/usr/local/lib/python2.7/dist-packages
person Martin Mohan    schedule 23.09.2013
comment
Это сделало это sudo ln -s /usr/local/bin/pip-2.7 / usr / bin / pip - person dartdog; 09.02.2014
comment
Вам действительно может понадобиться ответ @boredcoding вместо этого. - person nedned; 14.03.2016
comment
К сожалению, ответ неверен , если вы не hash -r первым. - person gented; 30.03.2017
comment
нет необходимости удалять или переустанавливать python-pip, если переменные env перепутались, поместите символическую ссылку, как это предлагает @dartdog. Поскольку метод удаления / переустановки вернет старую версию pip 9.0 вместо 19.2. - person Shaze; 23.07.2019

Прежде чем довольствоваться apt-get, он удаляет и устанавливает. Стоит сбросить кеш bash.

hash -r

Bash кэширует путь к pip, используя дистрибутивную установку (apt-get), которая находится в / usr / bin / pip. Если вы все еще находитесь в том же сеансе оболочки из-за кеша, после обновления pip из pip ваша оболочка по-прежнему будет искать в / usr / bin /, а не в / usr / local / bin /

Например:

$apt-get install python-pip
$which pip
/usr/bin/pip

$pip install -U pip
$which pip
/usr/bin/pip

$hash -r
$which pip
/usr/local/bin/pip
person boredcoding    schedule 20.03.2014
comment
Я запускал каждую команду, как указано выше (для меня: после выполнения pip install -U pip консоль вернула / usr / local / bin / pip) - все сработало, и я может снова запустить pip freeze! - person Jacob Irwin; 02.04.2015
comment
Это было потрясающе: o) На всю жизнь я не мог понять, почему pip не выполнялся, когда я мог видеть / usr / local / bin в PATH - person Storm; 21.06.2016
comment
Нераспространяемое программное обеспечение / libs / docs и т. Д. Обычно устанавливается в / usr / local / xxx, а не в / usr / xxx. если вы введете $ PATH, вы увидите / usr / local / bin в списке перед / usr / bin. Это гарантирует, что то, что мы установили вне apt, будет рассмотрено в первую очередь. Это обычная проблема и с nodejs, поскольку исполняемый файл называется nodejs, а не node. Npm хочет узел. Итак, мы решаем проблему, создавая символическую ссылку / usr / bin / nodejs на / usr / local / bin / node. Надеюсь, это поможет понять, почему это работает. - person boredcoding; 21.06.2016
comment
@etayluz Войдите в систему как пользователь root, введите which pip и убедитесь, что это / usr / local / bin / pip, а не / usr / bin / pip. Если это / usr / bin / pip, то переменная корневого пути не ищет в / usr / local / bin / до / usr / bin. 'hash -r' - это просто сброс кеша, он ничего не сделает для вас, если переменная пути на самом деле неверна. При вызове sudo без указания bash поддерживать активную среду вошедших в систему пользователей, он активирует среду пользователей root. Есть способы сохранить вашу среду при запуске sudo. Например. stackoverflow.com/questions/257616/sudo-changes-path-why - person boredcoding; 03.05.2017
comment
@etayluz В дополнение к этому, hash -r сбрасывает кеш только для вошедшего в систему пользователя. Решение может быть таким же простым, как просто войти в систему как root и ввести «hash -r» или просто добавить / usr / local / bin; в начало переменной среды пути пользователя root (или, по крайней мере, перед / usr / bin). - person boredcoding; 03.05.2017
comment
Это действительно помогло мне, после переустановки и отсутствия такого файла или каталога при запуске pip я использовал hash -r, как вы сказали, и это решило проблему. Спасибо! - person ellpei; 12.11.2019

У меня была такая же проблема с запуском Mint 18.1 после обновления pip. Я решил это, просто закрыв и открыв терминал.

person Alex    schedule 10.05.2018
comment
Это действительно сработало и для меня. Я рад, что прочитал это, прежде чем пошел и сделал кучу деинсталляции / переустановки. - person SunshinyDoyle; 18.05.2018

У меня была та же проблема, что и у @dartdog, и благодаря @Martin Mohan и @warvariuc я смог полностью удалить pip

К сожалению, используя команду

apt-get install python-pip 

Устанавливал старую версию pip, поэтому после выполнения

/usr/local/bin/pip uninstall pip  
apt-get remove python-pip  

Чтобы установить последнюю версию pip, я получил файл get-pip.py из https://bootstrap.pypa.io/get-pip.py

И как только в каталоге файлов из командной строки выполнилась команда python get-pip.py надеюсь, что это кому-то поможет

Также для некоторых команд требуется sudo, удачи !!

person サルバドル    schedule 22.11.2017
comment
Вы можете обновить общесистемный pip из pip с помощью 'sudo pip install -U pip' sudo, за исключением особых случаев, потребуется в любое время, когда вы захотите изменить системный python, что включает использование pip для установки пакетов в общесистемные папки пакетов. - person boredcoding; 06.01.2018
comment
Для Python 2.7 используйте bootstrap.pypa.io/pip/2.7/get-pip .py вместо этого - person Elijah; 07.07.2021

Мне помогли эти два ответа в других темах:

  1. Повторная установка pip: https://stackoverflow.com/a/49997795/9377685

  2. pip начал работать после шага 1, но продолжал показывать ошибку:

RequestsDependencyWarning: Old version of cryptography ([1, 2, 3]) may cause slowdown. warnings.warn(warning, RequestsDependencyWarning)

Этот ответ помог обновить криптографию и PyOpenSSL: https://stackoverflow.com/a/51284877/9377685

person Jrct    schedule 14.01.2019

Я использовал pip с Python 3.5.2. Затем я напортачил во время обновления до Python 3.6 и решил вернуться на 3.5. После того, как я удалил pip-3.6, pip3 указывал на /usr/local/bin/pip3, но символическая ссылка на фактический каталог установки pip отсутствовала. Я исправил это с помощью

sudo ln -s /usr/bin/pip3 /usr/local/bin/pip3

person Adam Trizuljak    schedule 27.08.2018