Как определить и удалить пакеты Python, установленные через pip?

58

Я случайно установил пакеты Python в свою систему, используя pip вместо apt-get . Я сделал это двумя способами:

  • , используя более старую версию virtualenv, я забыл добавить --no-site-packages при создании virtualenv - после этого, когда я вызывал pip install , пакеты Python, которые были установлены в системе, а не virtualenv
  • в правильной настройке virtualenv, я набрал sudo pip install somepackage - sudo, установленный в системе, а не virtualenv

Мне это удалось заметить, потому что я набрал pip freeze за пределами virtualenv и заметил некоторые пакеты Python, которые не должны быть там. Итак, теперь мой вопрос:

  • как определить все пакеты Python, которые были ошибочно установлены в системе (то есть пакеты Python, которые отображаются в списке pip freeze , но не были установлены с apt-get )?
  • как их удалить?
задан d3vid 08.08.2012 в 10:48
источник

5 ответов

49

Ubuntu Oneiric (и я ожидаю, что и новые версии) установит пакеты пакетов в /usr/local/lib/python2.7/dist-packages и apt пакетов на /usr/lib/python2.7/dist-packages . Поэтому просто проверьте прежний каталог и sudo pip uninstall каждого найденного там пакета.

    
ответ дан Capi Etheriel 22.02.2013 в 13:48
источник
9

В настоящее время Pip игнорирует команды удаления, которые пытаются удалить что-то принадлежащее ОС. Это не ошибка, как это происходит с отсутствующим пакетом. Итак, теперь вы можете удалить следующий процесс:

pip freeze > dump.txt

Отредактируйте сбрасываемый файл, чтобы удалить любые строки -e «редактируемые установки», все после знака == ( %s;==.*;;g in vim), замените новые строки для пробелов ( %s;\n; ;g в vim). Затем вы можете удалить все принадлежащие ему пакеты с помощью

cat dump.txt | xargs sudo pip uninstall -y

Мне пришлось выполнить эту процедуру дважды, потому что несколько пакетов были установлены в ~/.local/lib .     

ответ дан Henry Schreiner 26.10.2015 в 15:54
6

AFAIK sudo pip install будет установлен на /usr/local/lib/pythonVERSION/dist-packages . Для удаления пакетов в системе необходимо запустить sudo pip uninstall . Похоже, что pip freeze ищет метаданные пакета и перечисляет все, что установлено, например, как из pip, так и apt-get за пределы virtualenvs. В виртуальной среде есть опция -l , чтобы отображать пакеты, применимые только к этой виртуальной среде, но, по-видимому, это также случай по умолчанию, а также внутри виртуальной среды. Я думаю, вы можете просто удалить связанные пакеты на /usr/local/lib/pythonVERSION/dist-packages , но не очень удобный метод, я думаю.     

ответ дан sagarchalise 08.08.2012 в 13:01
3

Чтобы удалить пакет, установленный через pip, просто нажмите Ctrl + Alt + T на клавиатуре, чтобы открыть терминал. Когда он откроется, запустите команду ниже.

pip uninstall < package-name >

Поиск пакетов

pip search <package you want to search for>

Чтобы определить, какие пакеты Python были установлены pip, командой freeze , которая предоставит вам список установленных пакетов и их версий. Я бы предложил удалить все экземпляры и переустановить, используя команду sudo apt-get

sudo apt-get install python3
    
ответ дан Mitch 08.08.2012 в 11:13
-1

Это как-то связано с Homebrew. У меня не было проблем с pyobbc на моем Mac Air, пока я не установил Homebrew и не использовал его для нескольких вещей. Я нашел этот поток в github , который заканчивается решением, которое сработало для меня.

«Если у вас есть Homebrew, просто установите заголовки ODBC:

$ brew install unixodbc

и снова запустите «pip install pyodbc».

Этот 100% решил проблему для меня и занял только минуту. Дать ему шанс.     

ответ дан Pogo 04.07.2017 в 18:15