Я случайно установил пакеты Python в свою систему, используя pip
вместо apt-get
. Я сделал это двумя способами:
--no-site-packages
при создании virtualenv - после этого, когда я вызвал pip install
, пакеты Python были установлены в систему, а не virtualenv sudo pip install somepackage
- sudo, установленный в системе, а не virtualenv Я случайно заметил это, потому что я набрал pip freeze
за пределами virtualenv и обнаружил некоторые перечисленные пакеты Python, которых там быть не должно. Итак, теперь мой вопрос:
pip freeze
, но не были установлены с apt-get
)? 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
.
Чтобы удалить пакет, установленный через pip, просто нажмите Ctrl kbd> + Alt kbd> + T kbd> на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду ниже.
pip uninstall < package-name >
Поиск пакетов
pip search <package you want to search for>
Чтобы определить, какие пакеты Python были установлены с помощью pip, с помощью команды freeze
, которая выдаст вам список установленных пакетов и их версий. Я бы предложил удалить все экземпляры и переустановить с помощью команды sudo apt-get
sudo apt-get install python3
Мне нужно было безопасно очистить дисковое пространство от пакетов Python. Хотя это полная очистка пакетов, мне нужно было также перенести версии Python, чтобы старые пакеты не требовались. Я использовал следующее, чтобы получить все мои имена пакетов, пропустить первые 2 строки и получить первый столбец, а также удалить без взаимодействия с пользователем:
pip list | awk 'NR>2 {print $1}' | xargs -I {} pip uninstall -y {}
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
, но это не очень удобный метод, я думаю.
Это как-то связано с домашним пивом. У меня не было проблем с pyodbc на моем Mac Air, пока я не установил Homebrew и не использовал его для нескольких вещей. Я нашел этот поток на github , который заканчивается решением, которое работало на меня.
«Если у вас есть Homebrew, просто установите заголовки ODBC:
$ brew install unixodbc
и снова запустите« pip install pyodbc »».
Это на 100% решило проблему для я и только на мгновение. Дать ему шанс.
Для удаления всех пакетов pip из моей виртуальной среды я использовал следующее:
pip list | tail -n+3 | grep -ve '^#\|^wheel\|^pip\|^setuptools ' | cut -d' ' -f1 | xargs pip uninstall -y
Я все еще храню wheel
, pip
и инструменты настройки
.
Кроме того, список пунктов
предпочтительнее, чем замораживание пунктов
в моем случае, поскольку список пунктов
перечисляет пакеты, установленные с помощью -e
с только их имена.