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

Я случайно установил пакеты 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)?
  • как мне их удалить?
73
задан 6 May 2014 в 00:40

7 ответов

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

0
ответ дан 6 May 2014 в 00:40

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

pip freeze > dump.txt

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

cat dump.txt | xargs sudo pip uninstall -y

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

0
ответ дан 6 May 2014 в 00:40

Чтобы удалить пакет, установленный через 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
0
ответ дан 6 May 2014 в 00:40

Мне нужно было безопасно очистить дисковое пространство от пакетов Python. Хотя это полная очистка пакетов, мне нужно было также перенести версии Python, чтобы старые пакеты не требовались. Я использовал следующее, чтобы получить все мои имена пакетов, пропустить первые 2 строки и получить первый столбец, а также удалить без взаимодействия с пользователем:

pip list | awk 'NR>2 {print $1}' | xargs -I {} pip uninstall -y {}
0
ответ дан 6 May 2014 в 00:40

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, но это не очень удобный метод, я думаю.

0
ответ дан 6 May 2014 в 00:40

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

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

$ brew install unixodbc

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

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

0
ответ дан 6 May 2014 в 00:40

Для удаления всех пакетов pip из моей виртуальной среды я использовал следующее:

pip list | tail -n+3 | grep -ve '^#\|^wheel\|^pip\|^setuptools ' | cut -d' ' -f1 | xargs pip uninstall -y

Я все еще храню wheel, pip и инструменты настройки.

Кроме того, список пунктов предпочтительнее, чем замораживание пунктов в моем случае, поскольку список пунктов перечисляет пакеты, установленные с помощью -e с только их имена.

0
ответ дан 7 September 2020 в 08:53

Другие вопросы по тегам:

Похожие вопросы: