Как обнаружить и удалить пакеты 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)?
  • как мне их удалить?

6 ответов

Решение

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

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

pip freeze > dump.txt

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

cat dump.txt | xargs sudo pip uninstall -y

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

Насколько мне известно 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 но не очень удобный метод, я думаю.

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

Я использовал следующее, чтобы удалить все пакеты pip из моей виртуальной среды:

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

Я все еще держу wheel, pip а также setuptools.

Также, pip list предпочтительнее pip freeze в моем случае с pip list перечисляет пакеты, установленные с -e только их именами.

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

pip list | awk 'NR>2 {print $1}' | xargs -I {} pip uninstall -y {}

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

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

$ brew install unixodbc

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

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

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