Как удалить редактируемые пакеты с помощью pip (устанавливается с -e)
Я установил несколько пакетов с -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
Как мне удалить такой пакет?
8 ответов
В {virtualenv}/lib/python2.7/site-packages/
(если не использовать virtualenv, то {system_dir}/lib/python2.7/dist-packages/
)
- удалить файл яйца (например,
distribute-0.6.34-py2.7.egg
) если есть - из файла
easy-install.pth
, удалите соответствующую строку (это должен быть путь к исходному каталогу или к файлу egg).
Более простой способ сделать то же самое с новой версией setup_tools - запустить следующее:
python setup.py develop -u
Который в основном делает то же самое, что описывает @glarrain в своем ответе.
Установите пакет dev, используя cmd:
pip install --editable .
Удаление:
rm -r $(find . -name '*.egg-info')
Просто удалите пакет, который вы установили в "редактируемом" режиме:
pip uninstall yourpackage
Оказывается, моя установка была как-то повреждена.
Я мог бы найти запись в:
/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
...
Это ошибка в 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, хотя решения есть "удалить все" разнообразие.
... пип пакеты [перейти] к
/usr/local/lib/python2.7/dist-packages
и подходящие пакеты для/usr/lib/python2.7/dist-packages
... несколько пакетов были установлены в
~/.local/lib
тоже.
Для моей системы все, что мне нужно было удалить, было /usr/local/lib/python2.7/dist-packages/{package_name}.egg-link
В случае, если это поможет кому-то еще: Не уверен, что это та же проблема, но я столкнулся с чем-то похожим, где я установил пакет локально для разработки с:
$ pip install -e .
но когда я побежал
$ pip uninstall -e .
я получил
Usage:
pip uninstall [options] <package> ...
pip uninstall [options] -r <requirements file> ...
no such option: -e
и когда я бегу pip freeze
я получил
package1=1.0.0
package2=1.0.0
...
package12=1.0.0
-e git+git@github.com/me/my-repo.git@hash
package13=1.0.0
...
Так что я бросил это в requirements.txt
удалил все кроме -e
Строка (и) и затем выполняется:
$ pip uninstall -r requirements.txt
который работал для меня
Я думаю, мне есть что добавить ко всем ответам здесь:
С использованиемpip list
вы увидите все свои установленные пакеты, и есть небольшая хитрость: одинpip install
может создать несколько записей в этом списке. В частности, когда вы выполняете редактируемую установку, вы будете иметь свой список помимо местоположения источника на вашем диске.
Этот<package_name>
используется только дляpip
и никогда не вызывается в питоне, насколько я понимаю, он настраивается в вашемpyproject.toml
,setup.cfg
илиsetup.py
.
Таким образом, чтобы правильно удалить ваш пакет с помощью pip, вы должны использовать это имя, а не имя отдельных модулей, включенных в ваш пакет.
Надеюсь, поможет!