如何使用 pip 卸载可编辑包(使用 -e 安装)
Posted
技术标签:
【中文标题】如何使用 pip 卸载可编辑包(使用 -e 安装)【英文标题】:How to uninstall editable packages with pip (installed with -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 uninstallconda develop -u .
你知道为什么pip uninstall yourpackage
没有用吗?就像你的错误是什么意思?命令的输出似乎很奇怪...
你试过pip uninstall -e .
或python setup.py develop -u
吗?
对我来说pip uninstall library
工作得很好。如果你去回答 OP 提供的答案,他的图书馆被破坏似乎有点奇怪。希望这可以节省人们下次来这里的时间。不过,有许多不同的选项可能会起作用。
【参考方案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 --uninstall
或python setup.py develop -u
【讨论】:
你能指定你在哪里运行第二个命令吗? @ethana***s.
是当前目录,你使用包的完整绝对路径。
不完整。所有的 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/
)
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
...
【讨论】:
您的安装已损坏是什么意思?以上是关于如何使用 pip 卸载可编辑包(使用 -e 安装)的主要内容,如果未能解决你的问题,请参考以下文章