【问题标题】:How to uninstall editable packages with pip (installed with -e)如何使用 pip 卸载可编辑包(使用 -e 安装)
【发布时间】:2013-06-25 03:49:25
【问题描述】:

我已经用 -e 安装了一些包

> pip install -e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev

我看到了 pip freeze

> 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 卸载在最新版本的 pip 中以可编辑模式安装的软件包(我的是 19.1.1)。确保使用 setup.py 中的包名,而不是您在 entry_points 中指定调用该包的别名
  • 对于使用 conda 的人,在 conda 中以开发模式卸载:conda develop -u .
  • 你知道为什么pip uninstall yourpackage 没有用吗?就像你的错误是什么意思?命令的输出似乎很奇怪...
  • 你试过pip uninstall -e .python setup.py develop -u吗?
  • 对我来说pip uninstall library 工作得很好。如果你去回答 OP 提供的答案,他的图书馆被破坏似乎有点奇怪。希望这可以节省人们下次来这里的时间。不过,有许多不同的选项可能会起作用。

标签: pip uninstallation


【解决方案1】:

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

pip uninstall yourpackage

它适用于最近的 pip 版本(至少 >=19.1.1)。

【讨论】:

  • OP 已经尝试过这个并在他的问题中这么说。这不一定适用于安装为“可编辑”的软件包
  • @dusktreader:我不确定 OP 的 pip uninstall 命令发生了什么(可能是过时的 pip 版本?),但我已经验证在正常情况下它完全符合建议在@glarrain 接受的答案中手动执行。如果它不适合您,请详细说明您在此处所做的事情,以便我们进一步挖掘问题。
  • @Apteryx 等等,你是说即使在可编辑模式下也能工作?
  • 这个答案对我有用。我认为它对 OP 不起作用,因为如果您检查他的答案,他的安装有一些奇怪的损坏(或者他的计算机处于奇怪的状态)。 pip uninstall pkg 工作 afaik。
  • 试过这个pip uninstall an-editable-package-0.1.0并得到WARNING: Skipping an-editable-package-0.1.0 as it is not installed.,但它肯定是用pip install -e an-editable-package-0.1.0安装的。
【解决方案2】:

使用 cmd 安装开发包:

pip install --editable .

卸载:

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

现在您可以使用:

pip uninstall package_name 

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

【讨论】:

  • 你能指定你在哪里运行第二个命令吗?
  • @ethanabrooks . 是当前目录,你使用包的完整绝对路径。
  • 不完整。所有的 Python 包呢? (site-packages目录)
  • 这不会完全撤消安装。它会从安装包的文件夹中删除内容,但不会删除dist-packages 目录(Python 查找已安装包的位置)中的符号链接。使用清洁剂python setup.py develop -u.
  • @Charlie path/to/pythonX.Y setup.py develop --uninstall 也应该卸载,但我建议改用 pip 方式。
【解决方案3】:

对新版本的 setup_tools 执行相同操作的更简单方法是运行以下命令:

python setup.py develop -u

这与@glarrain 在他的回答中描述的基本相同。

【讨论】:

  • 该命令应该有任何输出吗?我知道它说running develop,但我仍然是.egg-info 文件...是否应该删除它?
  • 有这个答案的“setup_tools 的新版本”是什么?你能确认一下吗?
  • 您的回答是否保证不必手动移除薄层?
  • 它不会产生任何输出。根据我的理解,它应该删除它:“--uninstall, -u 取消部署当前项目。您可以使用--install-dir 或-d 选项来指定暂存区。创建的.egg-link 文件将被删除,如果存在并且它仍然指向项目目录。”来自setuptools docs。运行后它是否仍然从开发目录加载内容?
  • @CharlieParker 我不确定这是在哪个版本中引入的。我从来不需要手动删除这些文件。
【解决方案4】:

这是 debian/ubuntu linux 上使用 OS 安装的 pip(我是 v8.1.1)的一个错误,即使你已经升级了 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,尽管解决方案有“删除所有内容”的种类。

...pip packages [go] to /usr/local/lib/python2.7/dist-packages, apt packages to /usr/lib/python2.7/dist-packages

...~/.local/lib 中也安装了一些软件包。

对于我的系统,我只需要删除/usr/local/lib/python2.7/dist-packages/{package_name}.egg-link

【讨论】:

  • 对我来说 pip uninstall library 工作得很好。如果你去回答 OP 提供的答案,他的图书馆被破坏似乎有点奇怪。希望这可以节省人们下次来这里的时间。不过,有许多不同的选项可能会起作用
【解决方案5】:

{virtualenv}/lib/python2.7/site-packages/(如果不使用 virtualenv 则{system_dir}/lib/python2.7/dist-packages/

  • 删除 egg 文件(例如distribute-0.6.34-py2.7.egg)(如果有)
  • 从文件easy-install.pth中删除相应的行(它应该是源目录或egg文件的路径)。

【讨论】:

  • 有点奇怪,没有相应的卸载方式。
  • @Drake 是的,实际上很烦人
  • 使用当前的 pip 版本,对于使用 -e 选项安装的软件包,卸载也可以正常工作。
  • 对我来说使用 8.1.2,pip uninstall package_name 有效,但 pip uninstall . 无效
  • 存在一个针对 pip here 的未解决问题,因为它能够删除可编辑安装的软件包。
【解决方案6】:

原来我的安装不知何故损坏了。

我可以在以下位置找到条目:

/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
...

【讨论】:

  • 您的安装已损坏是什么意思?
猜你喜欢
  • 2015-08-17
  • 2018-07-27
  • 2019-01-04
  • 2021-12-11
  • 2018-06-28
  • 1970-01-01
  • 2014-03-29
  • 2011-10-01
  • 2018-08-05
相关资源
最近更新 更多