Удаление модуля Python, установленного в режиме разработки

93

Привет, я пробовал упаковывать python с помощью setuptools и для тестирования установил модуль в режиме разработки. т.е.

python setup.py develop

Это добавило мой каталог модулей в sys.path. Теперь я хочу удалить модуль, есть ли способ сделать это?

заранее спасибо

Copyninja
источник
4
Начните использовать pipили другой менеджер с возможностью удаления для управления пакетами python.
Tomasz Wysocki
1
@Tomasz Как сделать эквивалент python setup.py developс pip?
akaihola
7
pip install -e.
Tomasz Wysocki
11
«пип» - неправильный ответ на этот вопрос. Установка проекта, который вы разрабатываете с помощью «pip» для его запуска или использования, означает, что вам придется переустанавливать его каждый раз, когда вы изменяете исходный код. Правильный способ - использовать setup.py develop, как указано в исходном вопросе.
Джонатан Хартли,
6
@JonathanHartley Это просто ложь; pip имеет аргумент --editable(или -e), который ведет себя примерно так же, как setuptoolsdevelop . Я подумал, что, возможно, --editableэто новее, чем ваш комментарий, но нет - быстрый поиск репозитория pip на GitHub обнаруживает ссылки на редактируемые файлы в коммитах еще в 2009 году. Более того, я вижу, что на это уже указывал Томаш Высоцкий, прежде чем вы прокомментировали !
Марк Эмери

Ответы:

225

Используйте --uninstallили -uопцию develop, то есть:

python setup.py develop --uninstall

Это удалит его из easy-install.pth и удалит ссылку .egg. Единственное, чего он не делает, - это удаляет скрипты (пока).

Пи Джей Эби
источник
3
Обратите внимание, что если в вашей разрабатываемой версии были установлены некоторые исполняемые файлы, а вы изменили их в своем setup.py, вам следует вручную удалить их.
norok2 02
1
Я запускаю его так, как описано, без ошибок в выводе, но я все еще могу импортировать свой пакет разработки глобально, кажется, он не был удален. РЕДАКТИРОВАТЬ: Я знаю, почему, мне пришлось запустить его с --userопцией, как я делал во время установки:python setup.py develop --uninstall --user
Марек
Я не думаю, что это безопасно, так как все может измениться при разработке (например) переименовании модуля. Вам нужно вручную все удалить.
mathtick 03
@ norok2 какие команды нужно запускать вручную, чтобы удалить эти исполняемые файлы. Насколько я знаю, это работает для определенной версии python / pip, хотя я не уверен, какие именно.
Чарли Паркер
1
@CharlieParker rmили в delзависимости от вашей ОС. Я имел в виду, что если у вас были какие-то исполняемые файлы во время установки, а затем вы изменили их имена (или удалили их) в своем setup.py, то setup.pyбольше не будете знать о них (независимо от вашей pip/ pythonверсии, и вам нужно позаботиться о них. Они обычно находятся в каком-то binкаталоге в системах POSIX (читайте Linux, BSD, MacOS X), не могут вспомнить про Win.
norok2
16

Отредактируйте файл easy-install.pth в каталоге пакетов сайта и удалите строку, указывающую на версию этого пакета для разработки.

Zooko
источник
Да, я сделал именно это, и там был еще один файл с именем package-egg-link или что-то в этом роде, которое я удалил, и теперь ссылка на модуль удалена. Спасибо :)
copyninja 01
10
"setup.py develop --uninstall" сделает это за вас, см. ответ @ pjeby
Джонатан Хартли,
3
Это сработало для меня, когда я develop --uninstallпотерпел неудачу, потому что я разделил проект на два, а неправильный остался в исходном каталоге.
Уэсли Боуг
1

У меня раньше была подобная проблема. Я загрузил оболочку Python, импортировал модуль, а затем распечатал его __file__атрибут. Оттуда я просто удалил папку или файл, который был связан.

Что вы можете захотеть изучить, так это использовать virtualenv, эта система позволяет вам создать экземпляр python отдельно от вашей системы. Любые модули, которые вы устанавливаете или используете в этом экземпляре, являются автономными, включая версию модуля.

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

Танеракс
источник
Что ж, в следующий раз, когда я буду играть с пакетами, я буду использовать это, чтобы не испортить мою систему Python. Спасибо за информацию
copyninja 01