pip uninstall больше не является правильным ответом. Вот доказательство. [sri @ localhost python] $ pip uninstall foo УСТАРЕВАНИЕ: удаление установленного distutils проекта (foo) устарело и будет удалено в следующей версии. Это связано с тем, что удаление проекта distutils приведет к удалению проекта только частично.
строптивая
@shrewmouse, который больше не показывает.
JC Rocamonde
@JCRocamonde С пакетом, который я создал, последняя версия пипа показывает, It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.что это все еще проблема.
Джош
@Josh в верхней части файла setup.py выполните «из настройки импорта setuptools» вместо «из настройки импорта distutils.core».
Затем удалите также содержащий каталог, например, /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/на macOS. У него нет файлов, но Python все равно импортирует пустой модуль:
>>>import my_module>>> my_module.__file__None
После удаления Python показывает:
>>>import my_moduleTraceback(most recent call last):File"<stdin>", line 1,in<module>ModuleNotFoundError:No module named 'my_module'
Как я могу переустановить пакет, у меня есть исходный код использования setup.py из него?
ア レ ッ ク ス
5
Это также оставляет пустые каталоги на их месте.
Dilawar
3
Привет, я попробовал ваше предложение, для некоторых файлов, когда я пытаюсь cat files.txt | xargs rm -rf говорит, что разрешение запрещено, даже в режиме sudo, например, для / usr / local / bin / pydoc или / usr / local / bin / idle. Есть идеи, почему?
212
Для меня в основном работает следующее:
установить пункт, например:
$ easy_install pip
Проверьте, как называется ваш установленный пакет с точки зрения pip:
$ pip freeze
В этом списке будут перечислены все пакеты, которые вы установили (и которые были обнаружены pip). Имя может быть когда-нибудь длинным, тогда используйте только имя пакета, отображаемого в и после #egg=. Вы также можете в большинстве случаев игнорировать часть версии (что следует ==или -).
Затем удалите пакет:
$ pip uninstall package.name.you.have.found
Если он запрашивает подтверждение об удалении пакета, то вы счастливчик, и он будет удален.
pip должен обнаружить все пакеты, которые были установлены с помощью pip. Он также должен обнаружить большинство пакетов, установленных с помощью easy_install или setup.py, но в некоторых редких случаях это может привести к сбою.
Вот реальный пример из моего локального теста с пакетом, названным ttr.rdstmcв MS Windows.
Все, что написано выше, по-прежнему применимо, так или иначе, сейчас есть небольшие модификации.
Установите pip в python 2.7.9 и python 3.4
Последние версии Python поставляются с пакетом, ensurepipпозволяющим устанавливать pip даже в автономном режиме:
$ python -m surepip --upgrade
В некоторых системах (например, в Debian Jessie) это недоступно (чтобы предотвратить нарушение установки Python в системе).
Используя grepилиfind
Примеры выше предполагают, что вы grepустановили. У меня был (в то время, когда на моем компьютере была MS Windows) установлен набор утилит linux (включая grep). В качестве альтернативы используйте родную MS Windows findили просто игнорируйте эту фильтрацию и найдите имя в более длинном списке обнаруженных пакетов Python.
какой упаковочный инструмент / версию вы используете для этого? ( distutilsи distributeт. д.)
Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功
1
Я использую setuptools. Вы можете проверить bitbucket.org/vlcinsky/ttr.aws.utils.s3 (что не идеально). В любом случае, я весьма недоволен использованием пакетов пространства имен, иногда импорт прерывается без видимой причины. Но это другая история.
Ян Влчинский
1
исправляя себя. Даже при том, что я импортирую setuptools, фактически я использую distribute. Еще один урок: при установке моего собственного пакета из pypi и планировании разработки другого, локально использующего то же пространство имен, не используйте$ pip install <the package> , не используйте $ easy_install <the package>, иначе вы столкнетесь с конфликтами при импорте вашего пакета разработки.
Ян Влчинский
1
Чтобы помочь другим: потому что я не root, я все устанавливаю у себя дома. Вот что я сделал easy_install --user --prefix=$HOME pip. Затем я добавил следующее в моих PATH: ln -s /home/tflutre/.local/bin/pip ~/bin, ln -s /home/tflutre/.local/bin/pip2.7 ~/binи ln -s /home/tflutre/.local/bin/pip2 ~/bin.
tflutre
3
Это должен быть принятый ответ, так как он намного проще, и pip обычно все равно поставляется с Python. Это просто использовать в командной строке / терминале - pip uninstall moduleили python -m pip uninstall moduleдолжно работать. Также должен быть кроссплатформенным, так как является частью Python.
Эдвард
81
Ответ № 1 имеет проблемы:
Не будет работать на Mac.
Если установлен файл с пробелами или другими специальными символами, xargsкоманда не выполнится и удалит все файлы / каталоги, которые соответствуют отдельным словам.
-rв rm -rfненужно и в худшем случае может удалить вещи , которые вы не хотите.
Вместо этого для unix-like:
sudo python setup.py install --record files.txt# inspect files.txt to make sure it looks ok. Then:
tr '\n''\0'< files.txt | xargs -0 sudo rm -f --
Есть также неразрешимые проблемы с удалением setup.pyустановки, которые не будут беспокоить вас в типичном случае. Для более полного ответа, смотрите эту вики-страницу:
Почему вы просто не оставляете предложение под одобренным? Обратите внимание, что эти "серьезные проблемы" касаются самых важных случаев.
lpapp
17
Я оставил комментарий под проголосовавшим. Мой комментарий похоронен по ссылке «загрузить больше комментариев», по которой мало кто нажимает. Я также сделал свой собственный ответ, потому что у меня было намного больше, чтобы сказать, т.е. ссылка в моем ответе. Кроме того, угловой случай не будет первым термином, который приходит мне в голову, когда в файле есть пробел.
Ян Келлинг
Что бы это ни стоило, я думаю, что это потерпит неудачу на именах файлов, которые содержат переводы строк :) Являются ли какие-либо сопровождающие пакетов таким злом, надеюсь, я никогда не узнаю.
Джек О'Коннор
2
В OS X Mavericks, по крайней мере, xargs не имеет опции -d. Почему? Потому что Apple любит тебя. В любом случае это имеет те же эффекты, что и выше, и безопасно с пробелами и тому подобным. Хотя это специфично для Bash. После запуска установки с помощью --record to files.txt:OIFS=$IFS; IFS=$'\n'; FILES=( $( cat files.txt ) ); IFS=$OIFS; sudo rm -rf "${FILES[@]}"
Джозеф Сикорски
2
@IanKelling Внедрение переменных внутри printfстроки формата не удастся, если строка содержит, например, символы %или \. Всегда предоставляйте строку формата: printf '%s\0' "$line"(также избегает эхо). Хотя вы можете избежать цикла, просто используяtr '\n' '\0' < files.txt | xargs -0 rm -f
geirha
39
Сначала запишите файлы, которые вы установили. Вы можете повторить эту команду, даже если вы ранее выполняли setup.py install:
python setup.py install --record files.txt
Когда вы хотите удалить, вы можете просто:
sudo rm $(cat files.txt)
Это работает, потому что команда rm берет разделенный пробелами список файлов для удаления, и ваша установочная запись является именно таким списком.
Есть ли способ проверить не только то, установила ли это моя программа, но и если с тех пор ни одно другое приложение не использовало этот ресурс? Например, я установил инструмент, для этого мне пришлось установить несколько библиотек, возможно, некоторые из них уже были установлены (что означает, что я не могу удалить в процессе удаления), но также я не могу удалить ничего, что другие приложения не был установлен, потому что моя библиотека была установлена первой ...
Габриель,
19
Теперь Python дает вам возможность установить pipво время установки (я на Windows, и, по крайней мере, Python делает для Windows!). Учитывая, что вы выбрали установку pipво время установки python (вам на самом деле не нужно выбирать, потому что это по умолчанию), pipон уже установлен для вас. Затем введите в pipкомандной строке, вы должны увидеть помощь. Вы можете найти необходимые инструкции по использованию там. Например, pip listпоказывает список установленных пакетов. Ты можешь использовать
Ленивый способ: просто удалите из меню установки Windows (если вы используете Windows) или из команды rpm, при условии, что вы сначала переустановите его после создания дистрибутива.
Я не знаю, нравится ли мне это, но вы получаете точку для ортогонального мышления. :)
Леннарт Регебро
Если честно, я тоже не уверен, следовательно, «ленивый путь» ;-) Но я подумал, что упомяну, что можно создать более «стандартный» установщик. Странно, но setup.py не предоставляет чистого способа удаления пакетов.
RedGlyph
1
Для удаления требуется централизованная регистрация установленных пакетов и их файлов, а их нет. Продолжаются дискуссии о том, как улучшить эту историю, и она может быть решена в Python 2.7 / 3.2 или 2.8 / 3.3 или около того.
Леннарт Регебро
1
@Lennart: не будет Python 2.8, по крайней мере, это текущее официальное заявление
Петр Овсяк
2
@PiotrOwsiak: Да, но тогда это не было утверждением. 2.8 все еще оставалось возможным в то время и оставалось таковым до одобрения PEP 404, я думаю, в конце прошлого года.
Леннарт Регебро
6
Перейдите в каталог с пакетом python и удалите файл .egg, например: В python 2.5 (ubuntu): /usr/lib/python2.5/site-packages/
В Python 2.6 (Ubuntu): /usr/local/lib/python2.6/dist-packages/
Работает, если только не устанавливать установленные файлы вне пакета, что делают некоторые, например, setuptools, который устанавливает, и команда easy_install.
Леннарт Регебро
3
Обычно, если пакет был установлен с использованием python setup.py, как указано в OP, яйцо не будет. OTOH, если он есть, потому что использовался easy_install, документированный способ удаления пакетов заключается в использовании easy_install -m перед удалением файла egg; в противном случае скорлупа яиц может остаться в файле easy-install.pth.
Нед Дейли
5
Не совсем отвечая на вопрос, но помогая мне каждый день:
Установите ваши пакеты с
pip install .
Это помещает пакет в $HOME/.local. Удалить с помощью
Гораздо проще написать это как sudo xargs rm -v < install.record.
пул
1
Если у вас все еще есть файлы, которые должны быть удалены после переустановки пакета, убедитесь, что папка buildтакже удалена. Поэтому, предполагая, что pkgэто пакет, который вы хотите удалить:
В какой-то момент в прошлом я случайно запускал «python setup.py install» в своей глобальной среде, и мне было очень трудно удалить его. Эти решения не помогли. «pip uninstall» не работал с «Не могу удалить« splunk-appinspect ». Не найдено файлов для удаления». msgstr "sudo pip uninstall" не работает "Невозможно удалить требование. spunk-appinspect, не установлено". Я попытался удалить pip, удалить кэш pip, найти пакет на моем жестком диске и т. Д.
«pip show» в конечном итоге привело меня к решению, «Location:» указывало на каталог, а переименование этого каталога привело к удалению упакованного из списка pip. Я переименовал каталог обратно, и он не появился в списке pip, и теперь я могу переустановить свой пакет в virtualenv.
Я запустил python setup.py installодин раз в моем PyCharm, он устанавливает все пакеты в моей базовой среде conda. Позже, когда я хочу удалить все эти пакеты, pip uninstallне работает. Мне пришлось удалить их из /anaconda3/lib/python3.7/site-packages вручную :(
Поэтому я не вижу причины, по которой они используют файл setup.py вместо записи файла needs.txt. Файл требований может использоваться для установки пакетов в виртуальной среде и не будет связываться с пакетами системного Python.
pip uninstall <your_package>
. См. Stackoverflow.com/questions/1231688/… .It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
что это все еще проблема.Ответы:
Примечание: избегайте
python setup.py install
использованияpip install .
Вам необходимо удалить все файлы вручную, а также отменить любые другие действия, которые установка выполняла вручную.
Если вы не знаете список всех файлов, вы можете переустановить его с помощью
--record
опции и взглянуть на этот список.Для записи списка установленных файлов вы можете использовать:
Если вы хотите удалить, вы можете использовать xargs для удаления:
Или, если вы используете Windows, используйте Powershell:
Затем удалите также содержащий каталог, например,
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/
наmacOS
. У него нет файлов, но Python все равно импортирует пустой модуль:После удаления Python показывает:
источник
cat files.txt | xargs sudo rm -rf
Для меня в основном работает следующее:
установить пункт, например:
Проверьте, как называется ваш установленный пакет с точки зрения pip:
В этом списке будут перечислены все пакеты, которые вы установили (и которые были обнаружены pip). Имя может быть когда-нибудь длинным, тогда используйте только имя пакета, отображаемого в и после
#egg=
. Вы также можете в большинстве случаев игнорировать часть версии (что следует==
или-
).Затем удалите пакет:
Если он запрашивает подтверждение об удалении пакета, то вы счастливчик, и он будет удален.
pip должен обнаружить все пакеты, которые были установлены с помощью pip. Он также должен обнаружить большинство пакетов, установленных с помощью easy_install или setup.py, но в некоторых редких случаях это может привести к сбою.
Вот реальный пример из моего локального теста с пакетом, названным
ttr.rdstmc
в MS Windows.Редактировать 2015-05-20
Все, что написано выше, по-прежнему применимо, так или иначе, сейчас есть небольшие модификации.
Установите pip в python 2.7.9 и python 3.4
Последние версии Python поставляются с пакетом,
ensurepip
позволяющим устанавливать pip даже в автономном режиме:$ python -m surepip --upgrade
В некоторых системах (например, в Debian Jessie) это недоступно (чтобы предотвратить нарушение установки Python в системе).
Используя
grep
илиfind
Примеры выше предполагают, что вы
grep
установили. У меня был (в то время, когда на моем компьютере была MS Windows) установлен набор утилит linux (включая grep). В качестве альтернативы используйте родную MS Windowsfind
или просто игнорируйте эту фильтрацию и найдите имя в более длинном списке обнаруженных пакетов Python.источник
distutils
иdistribute
т. д.)setuptools
. Вы можете проверить bitbucket.org/vlcinsky/ttr.aws.utils.s3 (что не идеально). В любом случае, я весьма недоволен использованием пакетов пространства имен, иногда импорт прерывается без видимой причины. Но это другая история.setuptools
, фактически я используюdistribute
. Еще один урок: при установке моего собственного пакета из pypi и планировании разработки другого, локально использующего то же пространство имен, не используйте$ pip install <the package>
, не используйте$ easy_install <the package>
, иначе вы столкнетесь с конфликтами при импорте вашего пакета разработки.easy_install --user --prefix=$HOME pip
. Затем я добавил следующее в моих PATH:ln -s /home/tflutre/.local/bin/pip ~/bin
,ln -s /home/tflutre/.local/bin/pip2.7 ~/bin
иln -s /home/tflutre/.local/bin/pip2 ~/bin
.pip uninstall module
илиpython -m pip uninstall module
должно работать. Также должен быть кроссплатформенным, так как является частью Python.Ответ № 1 имеет проблемы:
xargs
команда не выполнится и удалит все файлы / каталоги, которые соответствуют отдельным словам.-r
вrm -rf
ненужно и в худшем случае может удалить вещи , которые вы не хотите.Вместо этого для unix-like:
И для окон:
Есть также неразрешимые проблемы с удалением
setup.py
установки, которые не будут беспокоить вас в типичном случае. Для более полного ответа, смотрите эту вики-страницу:https://ofswiki.org/wiki/Uninstalling_setup.py_install
источник
OIFS=$IFS; IFS=$'\n'; FILES=( $( cat files.txt ) ); IFS=$OIFS; sudo rm -rf "${FILES[@]}"
printf
строки формата не удастся, если строка содержит, например, символы%
или\
. Всегда предоставляйте строку формата:printf '%s\0' "$line"
(также избегает эхо). Хотя вы можете избежать цикла, просто используяtr '\n' '\0' < files.txt | xargs -0 rm -f
Сначала запишите файлы, которые вы установили. Вы можете повторить эту команду, даже если вы ранее выполняли
setup.py install
:Когда вы хотите удалить, вы можете просто:
Это работает, потому что команда rm берет разделенный пробелами список файлов для удаления, и ваша установочная запись является именно таким списком.
источник
Теперь Python дает вам возможность установить
pip
во время установки (я на Windows, и, по крайней мере, Python делает для Windows!). Учитывая, что вы выбрали установкуpip
во время установки python (вам на самом деле не нужно выбирать, потому что это по умолчанию),pip
он уже установлен для вас. Затем введите вpip
командной строке, вы должны увидеть помощь. Вы можете найти необходимые инструкции по использованию там. Например,pip list
показывает список установленных пакетов. Ты можешь использоватьудалить любой пакет, который вам больше не нужен. Подробнее читайте здесь (документация по пунктам) .
источник
Ленивый способ: просто удалите из меню установки Windows (если вы используете Windows) или из команды rpm, при условии, что вы сначала переустановите его после создания дистрибутива.
Например,
(«foo» является примером, конечно).
источник
Перейдите в каталог с пакетом python и удалите файл .egg, например: В python 2.5 (ubuntu): /usr/lib/python2.5/site-packages/
В Python 2.6 (Ubuntu): /usr/local/lib/python2.6/dist-packages/
источник
Не совсем отвечая на вопрос, но помогая мне каждый день:
Установите ваши пакеты с
Это помещает пакет в
$HOME/.local
. Удалить с помощьюисточник
pip unistall .
не работал для меня, ноpip uninstall <package_name>
сделал, спасибо!Вероятно, вы можете сделать это в качестве альтернативы: -
1) Получить версию Python -
-> Приведенная выше команда дает вам текущую версию Python, которая является 2.4.3
2) Получить каталог установки Python -
-> С помощью приведенной выше команды вы можете получить каталог установки - /usr/lib/python2.4/site-packages
3) Отсюда вы можете удалить пакеты и файлы python egg
Это сработало для меня .. И я смог удалить пакет, который беспокоил меня :)
источник
Я думаю, что вы можете открыть setup.py, найти имя пакета, а затем попросить pip удалить его.
Предполагая, что имя доступно в переменной 'METADATA':
источник
Продолжая сказанное Мартином, запись выходных данных установки и небольшой сценарий bash делают свое дело довольно хорошо. Вот что я делаю ...
И престо. Ый.
источник
sudo xargs rm -v < install.record
.Если у вас все еще есть файлы, которые должны быть удалены после переустановки пакета, убедитесь, что папка
build
также удалена. Поэтому, предполагая, чтоpkg
это пакет, который вы хотите удалить:Работайте над python3 и удалите пакет и его файл * .egg-info.
источник
В
{virtualenv}/lib/python2.7/site-packages/
(если не использовать virtualenv, то{system_dir}/lib/python2.7/dist-packages/
)distribute-0.6.34-py2.7.egg
)easy-install.pth
, удалите соответствующую строку (это должен быть путь к исходному каталогу или к файлу яйца).источник
В какой-то момент в прошлом я случайно запускал «python setup.py install» в своей глобальной среде, и мне было очень трудно удалить его. Эти решения не помогли. «pip uninstall» не работал с «Не могу удалить« splunk-appinspect ». Не найдено файлов для удаления». msgstr "sudo pip uninstall" не работает "Невозможно удалить требование. spunk-appinspect, не установлено". Я попытался удалить pip, удалить кэш pip, найти пакет на моем жестком диске и т. Д.
«pip show» в конечном итоге привело меня к решению, «Location:» указывало на каталог, а переименование этого каталога привело к удалению упакованного из списка pip. Я переименовал каталог обратно, и он не появился в списке pip, и теперь я могу переустановить свой пакет в virtualenv.
источник
Я запустил
python setup.py install
один раз в моем PyCharm, он устанавливает все пакеты в моей базовой среде conda. Позже, когда я хочу удалить все эти пакеты,pip uninstall
не работает. Мне пришлось удалить их из /anaconda3/lib/python3.7/site-packages вручную :(Поэтому я не вижу причины, по которой они используют файл setup.py вместо записи файла needs.txt. Файл требований может использоваться для установки пакетов в виртуальной среде и не будет связываться с пакетами системного Python.
источник
Возможно, было бы лучше удалить связанные файлы, используя bash для чтения команд, например:
источник