Я установил пакет Python с python setup.py install
.
Как мне удалить его?
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 с python setup.py install
.
Как мне удалить его?
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
опции и взглянуть на этот список.
Для записи списка установленных файлов вы можете использовать:
python setup.py install --record files.txt
Если вы хотите удалить, вы можете использовать xargs для удаления:
xargs rm -rf < files.txt
Или, если вы используете Windows, используйте Powershell:
Get-Content files.txt | ForEach-Object {Remove-Item $_ -Recurse -Force}
Затем удалите также содержащий каталог, например, /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_module
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'
cat files.txt | xargs sudo rm -rf
Для меня в основном работает следующее:
установить пункт, например:
$ 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 freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev
$ python setup.py develop
.....
.....
Finished processing dependencies for ttr.rdstmc==0.0.1dev
$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
-e hg+https://vlcinsky@bitbucket.org/vlcinsky/ttr.rdstmc@d61a9922920c508862602f7f39e496f7b99315f0#egg=ttr.rdstmc-dev
ttr.utcutils==0.1.1dev
$ pip uninstall ttr.rdstmc
Uninstalling ttr.rdstmc:
c:\python27\lib\site-packages\ttr.rdstmc.egg-link
Proceed (y/n)? y
Successfully uninstalled ttr.rdstmc
$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev
Все, что написано выше, по-прежнему применимо, так или иначе, сейчас есть небольшие модификации.
Последние версии Python поставляются с пакетом, ensurepip
позволяющим устанавливать pip даже в автономном режиме:
$ python -m surepip --upgrade
В некоторых системах (например, в Debian Jessie) это недоступно (чтобы предотвратить нарушение установки Python в системе).
grep
илиfind
Примеры выше предполагают, что вы grep
установили. У меня был (в то время, когда на моем компьютере была MS Windows) установлен набор утилит linux (включая grep). В качестве альтернативы используйте родную MS Windows find
или просто игнорируйте эту фильтрацию и найдите имя в более длинном списке обнаруженных пакетов 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:
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 --
И для окон:
python setup.py bdist_wininst
dist/foo-1.0.win32.exe
Есть также неразрешимые проблемы с удалением setup.py
установки, которые не будут беспокоить вас в типичном случае. Для более полного ответа, смотрите эту вики-страницу:
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
:
python setup.py install --record files.txt
Когда вы хотите удалить, вы можете просто:
sudo rm $(cat files.txt)
Это работает, потому что команда rm берет разделенный пробелами список файлов для удаления, и ваша установочная запись является именно таким списком.
Теперь Python дает вам возможность установить pip
во время установки (я на Windows, и, по крайней мере, Python делает для Windows!). Учитывая, что вы выбрали установку pip
во время установки python (вам на самом деле не нужно выбирать, потому что это по умолчанию), pip
он уже установлен для вас. Затем введите в pip
командной строке, вы должны увидеть помощь. Вы можете найти необходимые инструкции по использованию там. Например, pip list
показывает список установленных пакетов. Ты можешь использовать
pip uninstall package_name
удалить любой пакет, который вам больше не нужен. Подробнее читайте здесь (документация по пунктам) .
Ленивый способ: просто удалите из меню установки Windows (если вы используете Windows) или из команды rpm, при условии, что вы сначала переустановите его после создания дистрибутива.
Например,
python setup.py bdist_wininst
dist/foo-1.0.win32.exe
(«foo» является примером, конечно).
Перейдите в каталог с пакетом python и удалите файл .egg, например: В python 2.5 (ubuntu): /usr/lib/python2.5/site-packages/
В Python 2.6 (Ubuntu): /usr/local/lib/python2.6/dist-packages/
Не совсем отвечая на вопрос, но помогая мне каждый день:
Установите ваши пакеты с
pip install .
Это помещает пакет в $HOME/.local
. Удалить с помощью
pip uninstall <package_name>
pip unistall .
не работал для меня, но pip uninstall <package_name>
сделал, спасибо!
Вероятно, вы можете сделать это в качестве альтернативы: -
1) Получить версию Python -
[linux machine]# python
Python 2.4.3 (#1, Jun 18 2012, 14:38:55)
-> Приведенная выше команда дает вам текущую версию Python, которая является 2.4.3
2) Получить каталог установки Python -
[linux machine]# whereis python
python: /usr/bin/python /usr/bin/python2.4 /usr/lib/python2.4 /usr/local/bin/python2.5 /usr/include/python2.4 /usr/share/man/man1/python.1.gz
-> С помощью приведенной выше команды вы можете получить каталог установки - /usr/lib/python2.4/site-packages
3) Отсюда вы можете удалить пакеты и файлы python egg
[linux machine]# cd /usr/lib/python2.4/site-packages
[linux machine]# rm -rf paramiko-1.12.0-py2.4.egg paramiko-1.7.7.1-py2.4.egg paramiko-1.9.0-py2.4.egg
Это сработало для меня .. И я смог удалить пакет, который беспокоил меня :)
Я думаю, что вы можете открыть setup.py, найти имя пакета, а затем попросить pip удалить его.
Предполагая, что имя доступно в переменной 'METADATA':
pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")
Если у вас все еще есть файлы, которые должны быть удалены после переустановки пакета, убедитесь, что папка build
также удалена. Поэтому, предполагая, что pkg
это пакет, который вы хотите удалить:
rm -r $(python3 -c "import pkg; print(pkg.__path__[0] + '*' )")
rm -rf build
Работайте над 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 для чтения команд, например:
sudo python setup.py install --record files.txt
sudo bash -c "cat files.txt | xargs rm -rf"
pip uninstall <your_package>
. См. Stackoverflow.com/questions/1231688/… .