如何使用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

如何卸载这样的软件包?


pip uninstall <package>卸载以最新版本的pip(我的版本为19.1.1)以可编辑模式安装的软件包。确保使用setup.py中的程序包名称,而不是您在entry_points中指定用来调用该程序包的别名
picmate涅

对于使用conda的人,要在conda中以开发人员模式进行卸载:conda develop -u .
Charlie Parker

您知道为什么pip uninstall yourpackage不起作用了吗?像您的错误是什么意思?似乎命令的输出是奇怪的
查理·帕克

您尝试过pip uninstall -e .还是python setup.py develop -u
查理帕克

2
对我来说pip uninstall library工作得很好。如果您给出答案,则OP可能会认为他的库已损坏很奇怪。希望这可以节省人们下次来这里的时间。虽然,有许多不同的选择可能会起作用。
查理·帕克

Answers:


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中删除相应的行(它应该是源目录或egg文件的路径)。

43
令人惊讶的是,没有相应的卸载方法。
Drake Guan

4
@Drake是的,实际上很烦人
glarrain

4
在当前的pip版本中,对于使用-eoption 安装的软件包,卸载也可以正常进行。
2014年

9
对我来说,使用8.1.2 pip uninstall package_name可以用,但是pip uninstall .不能用
confused00

5
有对PIP开放的问题在这里的能力以去除可编辑的安装包。
克里斯·亨特

22

使用新版本的setup_tools进行此操作的更简单方法是运行以下命令:

python setup.py develop -u

基本上与@glarrain在其答案中描述的功能相同。


2
该命令应该有任何输出吗?我得到它说running develop但我仍然是.egg-info文件...应该删除它吗?
Pinocchio

具有此答案的“新版本的setup_tools”是什么?你能确认一下吗?
查理·帕克

您的答案是否保证不必手动去除薄片?
查理·帕克

它不会产生任何输出。根据我的理解,应将其删除:“ --uninstall,-u取消当前项目的部署。您可以使用--install-dir或-d选项指定暂存区域。创建的.egg-link文件将如果存在,并且仍指向项目目录,则将其删除。” 从setuptools docs中。运行此命令后,是否仍从开发目录加载内容?
艾哈迈德·谢里夫

@CharlieParker我不确定引入哪个版本。我从不需要手动删除这些文件。
Ahmed Shariff

10

使用cmd安装开发包:

pip install --editable .

卸载:

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

现在您可以使用:

pip uninstall package_name 

python setup.py develop --uninstallpython setup.py develop -u


4
您能否指定第二条命令的运行位置?
ethanabrooks

1
@ethanabrooks .是当前目录,您使用包的完整绝对路径。
Legolas Bloom

1
不完整 那所有的Python包呢?(site-packagesdir)
Jorge Orpinel '19年

这并不能完全撤消安装。它会从安装软件包的文件夹中删除内容,但不会删除dist-packages目录中的符号链接(Python 在其中查找已安装的软件包)。清洁使用python setup.py develop -u
Mark Amery

@MarkAmery谢谢,pip uninstall package_name现在就工作。
Legolas Bloom

6

这是使用操作系统安装的pip(对我而言是v8.1.1)在debian / ubuntu linux上的一个错误,sudo pip即使升级了pip(例如,get-pip.py),也将调用该bug。参见https://github.com/pypa/pip/issues/4438

有关如何清理的讨论,请参见/ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip,尽管其中有解决方案“删除所有内容”种类繁多。

... pip包[转到]到/usr/local/lib/python2.7/dist-packagesapt包/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
...

1
您的安装损坏是什么意思?
查理·帕克

-1

只需卸载以“可编辑”模式安装的软件包:

pip uninstall yourpackage

9
OP对此进行了尝试,并在他的问题中这样说。这不一定适用于安装为“可编辑”的软件包
dusktreader

2
@dusktreader:我不确定OP的pip uninstall命令是怎么回事(也许是pip的过时版本?),但是我已经证实,在正常情况下,它确实可以完成@glarrain所建议的手动建议中的操作。如果您不满意,请在此处详细说明您的工作,以便我们进一步探讨问题。
Apteryx

@Apteryx等等,您是说即使在可编辑模式下也可以使用?
查理·帕克

这个答案对我有用。我认为这对OP不起作用,因为如果您检查他的回答,他的安装会有些奇怪的损坏(或者他的计算机处于奇怪的状态)。pip uninstall pkg工程afaik。
查理·帕克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.