Подтвердить что ты не робот

Pip не удаляет пакеты

Фон

Я работаю над учебным проектом (в основном) анализирую некоторые "кто следует за" графиками и хотел бы получить некоторые реальные данные (путем создания некоторых небольших наборов данных) из Twitter с помощью одного из пакетов API Python Twitter, в чтобы проверить некоторые идеи, которые у меня есть.

Я был немного небрежен и установил два пакета:

a) python-twitter0.8.2 (http://pypi.python.org/pypi/python-twitter/0.8.2)

b) twitter1.9.1 (http://pypi.python.org/pypi/twitter/1.9.1)

(a) называется python-twitter в pypi, а (b) называется twitter, поэтому, как я буду ссылаться на них.

Оба они вызываются import twitter в интерпретаторе Python, но когда я пишу эту строку, я всегда получаю twitter один (если я могу понять, как использовать python-twitter один, я буду иметь возможность продолжить, но все равно будет иметь одну и ту же основную проблему).


Проблема

Поскольку мне не нужен пакет twitter, я решил удалить его с помощью pip:

$ sudo pip uninstall twitter

который дает результат:

Uninstalling twitter:
Proceed (y/n)? y
  Successfully uninstalled twitter

(на самом деле, я пробовал то же самое с python-twitter и получил аналогичный ответ).

Однако при запуске pip freeze оба этих пакета отображаются в установленном списке! На самом деле, я все еще могу использовать команду import twitter в интерпретаторе. Очевидно, что пакеты не были удалены. Мне бы хотелось узнать, как их удалить!


Другая информация:

Я использую Python 2.7 и Ubuntu 12.04

При запуске IDLE вместо интерпретатора оболочки, и я набираю help('modules'), ни twitter, ни python-twitter не отображаются в списке. При вводе help('modules') в интерпретатор оболочки я получаю ошибку ошибки сегментации и сбой интерпретатора. Здесь ошибка:

>>> help('modules')

Please wait a moment while I gather a list of all available modules...

/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning:
  g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed
  import gobject._gobject
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning:
  g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed
  from gtk import _gtk

** (python:2484): CRITICAL **: pyg_register_boxed: assertion `boxed_type != 0' failed
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: cannot register
existing type `GdkDevice'
  from gtk import _gtk
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_type_get_qdata: 
assertion `node != NULL' failed
  from gtk import _gtk
Segmentation fault (core dumped)

Почему другие вопросы не разрешили это для меня:

Я посмотрел на аналогичный пост в pip freeze lists uninstalled packages и у меня не было таких же проблем.

$ sudo which pip
/usr/bin/pip
$ which pip
/usr/bin/pip

который является тем же самым выходом. Кроме того, $ sudo pip freeze дает тот же результат, что и $ pip freeze.

Любая помощь очень ценится!

4b9b3361

Ответ 1

Вы всегда можете вручную удалить пакеты; вы можете запустить:

sudo rm -rf /usr/local/lib/python2.7/dist-packages/twitter

чтобы удалить этот пакет из каталога dist-packages. Возможно, вам придется отредактировать файл easy-install.pth в том же каталоге и удалить из него запись twitter.

Ответ 2

В то время как решение Martin работает, как работа, он не дает прямого ответа. Версия Ubuntu для версии Ubuntu (12.04):

 python-pip (1.0-1build1)

Это тоже та же версия для Debian Wheezy. В этой версии есть лишняя ошибка, из-за которой пакеты не удаляются.
Если вы получите пип-код вверх по течению с помощью script get-pip.py, у вас будет фиксированная версия пифа, которая может удалить pacakges (на данный момент v. 1.5.6).

Обновление

Python pip - действительно быстро движущаяся цель. Таким образом, использование Debian или Ubuntu pip гарантированно будет иметь ошибки. Не используйте это распределение pip. Вместо этого установите pip из восходящего потока.

Если вы хотите зарегистрировать пакеты с установленными пакетами в качестве системных пакетов, я действительно рекомендую вам также использовать stdeb.

Ответ 3

Мне пришлось столкнуться с трудностями при обновлении пакета, потому что pip не смог успешно его удалить. Мне пришлось удалить .egg-info и папку, а также в /usr/lib/python 2.7/dist-packages, а затем я попытался установить с --upgrade, и это сработало.

Ответ 4

В моем случае (перемещение pyusb от 0.4x до 1.0x), удаление старого пакета с apt-get удаляет python-usb и вручную устанавливает загруженный вручную пакет через python setup.py. Не красиво, но работает.

Ответ 5

Для меня это было связано с тем, что я запускал "замерзание", давая мне разные результаты, чем "sudo pip freeze". Поскольку я удалял использование sudo, это не было uininstalling его в сеансе "non-sudo". Удаление без sudo исправлено.