Как удалить редактируемые пакеты с помощью pip (устанавливается с помощью -e)

107

Я установил несколько пакетов с -e

> pip install -e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev

Я с пипсом замерз, вижу

> pip freeze
...
-e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev
...

когда я пытаюсь удалить пакеты, я получаю ошибки:

> pip uninstall horus-dev
Cannot uninstall requirement horus-dev, not installed

> pip uninstall horus
Cannot uninstall requirement horus, not installed

Как мне удалить такой пакет?

Michael_Scharf
источник
pip uninstall <package> удаляет пакеты, установленные в редактируемом режиме в последних версиях pip (у меня 19.1.1). Убедитесь, что вы используете имя пакета в setup.py, а не псевдоним, который вы указываете для вызова этого пакета в entry_points
picmate 涅
для людей, использующих conda, для удаления в режиме разработки в conda выполните:conda develop -u .
Чарли Паркер,
Разобрались, почему pip uninstall yourpackageне получилось? Нравится, что означают ваши ошибки? Кажется странным вывод команды ...
Чарли Паркер
Вы пробовали pip uninstall -e .или python setup.py develop -u?
Чарли Паркер
2
Для меня все pip uninstall libraryработало нормально. Если вы перейдете к ответу, OP при условии, что это что-то странное с его библиотекой, которая была повреждена. Надеюсь, это сэкономит время людям, когда они придут сюда в следующий раз. Хотя есть много разных вариантов, которые могут сработать.
Чарли Паркер

Ответы:

90

В {virtualenv}/lib/python2.7/site-packages/(если не использовать virtualenv {system_dir}/lib/python2.7/dist-packages/)

  • удалите файл с яйцом (например distribute-0.6.34-py2.7.egg), если он есть
  • из файла easy-install.pthудалите соответствующую строку (это должен быть путь к исходному каталогу или к файлу яйца).
Glarrain
источник
43
Как ни странно, для этого нет соответствующего способа удаления.
Дрейк Гуан
4
@Drake, да, на самом деле довольно неприятно
glarrain
4
В текущей версии pip удаление работает нормально также для пакетов, установленных с помощью -eoption.
knowngarkin
9
у меня используется 8.1.2, pip uninstall package_nameработает, но pip uninstall .не работает
confused
5
Существует открытый вопрос против пипа здесь для способности , чтобы удалить редактируемые установленные пакеты.
Крис Хант,
22

Более простой способ сделать то же самое с новой версией setup_tools - запустить следующее:

python setup.py develop -u

Что в основном делает то же, что @glarrain описывает в своем ответе.

Ахмед Шариф
источник
2
должен ли быть какой-нибудь вывод для этой команды? Я получаю, это говорит, running developно я все еще .egg-infoфайл ... предполагается, что его нужно удалить?
Пиноккио
Какая «новая версия setup_tools» дает такой ответ? Не могли бы вы это подтвердить?
Чарли Паркер
Ваш ответ гарантирует, что тонкости не нужно удалять вручную?
Чарли Паркер
Он не производит никаких результатов. Насколько я понимаю, он должен удалить его: "--uninstall, -u Отменить развертывание текущего проекта. Вы можете использовать параметр --install-dir или -d, чтобы указать промежуточную область. Созданный файл .egg-link будет быть удаленным, если он присутствует и все еще указывает на каталог проекта ". из документации setuptools . После запуска он все еще загружает контент из каталога разработки?
Ахмед Шариф
@CharlieParker Я не уверен, в какой версии он был представлен. Мне никогда не приходилось вручную удалять эти файлы.
Ахмед Шариф
10

Установите пакет dev, используя cmd:

pip install --editable .

Удалить:

rm -r $(find . -name '*.egg-info')

Теперь вы можете использовать:

pip uninstall package_name 

или python setup.py develop --uninstallилиpython setup.py develop -u

Леголас Блум
источник
4
Не могли бы вы указать, откуда вы запускаете вторую команду?
ethanabrooks
1
@ethanabrooks .- это текущий каталог, вы используете полный абсолютный путь к пакету.
Леголас Блум
1
Неполный. А как насчет всех пакетов Python? ( site-packagesреж.)
Хорхе Орпинель 01
Это не отменяет полностью установку. Он удаляет файлы из папки, из которой был установлен пакет, но не удаляет символическую ссылку в вашем dist-packagesкаталоге (где Python ищет установленный пакет). Очиститель для использования python setup.py develop -u.
Марк Эмери,
@MarkAmery Спасибо, pip uninstall package_nameработайте сейчас.
Леголас Блум
6

Это ошибка в debian / ubuntu linux с использованием установленного в ОС pip (v8.1.1 для меня), который вы будете вызывать, sudo pipдаже если вы обновили pip (например, get-pip.py). См. Https://github.com/pypa/pip/issues/4438

Для обсуждения того, как очистить, см. Https://askubuntu.com/questions/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip , хотя там есть решения разновидность «убрать все».

... pip packages [перейти] /usr/local/lib/python2.7/dist-packagesи apt пакеты для/usr/lib/python2.7/dist-packages

... также было установлено несколько пакетов ~/.local/lib.

Для моей системы все, что мне нужно было удалить, это /usr/local/lib/python2.7/dist-packages/{package_name}.egg-link

Мэтт Уилки
источник
Для меня все pip uninstall libraryработало нормально. Если вы перейдете к ответу, OP при условии, что это что-то странное с его библиотекой, которая была повреждена. Надеюсь, это сэкономит время людям, когда они придут сюда в следующий раз. Хотя есть много разных вариантов, которые могут сработать
Чарли Паркер
5

Оказывается, моя установка была каким-то образом повреждена.

Я мог найти запись в:

/usr/local/lib/python2.7/site-packages/easy-install.pth

Чтобы решить проблему, я вручную удалил строку в .pth файле!

import sys; sys.__plen = len(sys.path)
...
/absolute-path-to/horus  # <- I removed this line
...
Michael_Scharf
источник
1
Что означает, что ваша установка была повреждена?
Чарли Паркер
-1

Просто удалите пакет, который вы установили в «редактируемом» режиме:

pip uninstall yourpackage
Аптерикс
источник
9
ОП пробовал это и говорит об этом в своем вопросе. Это не обязательно работает с пакетами, установленными как «редактируемые»
dusktreader 05
2
@dusktreader: я не уверен, что происходит с pip uninstallкомандой OP (возможно, это устаревшая версия pip?), но я подтвердил, что при нормальных обстоятельствах она делает именно то, что было предложено сделать вручную в принятом ответе @glarrain. Если у вас не получается, подробно опишите, что вы здесь делаете, чтобы мы могли изучить проблему дальше.
Apteryx
@Apteryx, подождите, вы говорите, что это работает даже в редактируемом режиме?
Чарли Паркер
Этот ответ сработал для меня. Я думаю, что это не сработало для OP, потому что, если вы проверите его ответ, у него была какая-то странная поврежденная установка (или его компьютер был в странном состоянии). pip uninstall pkgработает афаик.
Чарли Паркер