How to uninstall editable packages with pip (installed with -e)
我已经用-e安装了一些软件包
1
| > pip install -e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev |
我用点子冻结我明白了
1 2 3 4
| > pip freeze
...
-e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev
... |
当我尝试卸载软件包时,出现错误:
1 2 3 4 5
| > 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中以dev模式卸载,请执行以下操作:conda develop -u .
-
您知道为什么pip uninstall yourpackage无效吗?像您的错误是什么意思?似乎从命令输出奇怪...
-
您尝试了pip uninstall -e .还是python setup.py develop -u?
-
我对如此之多的答案感到困惑。我们到底需要做什么?在什么情况下,我们需要手动删除东西,而在哪些情况下我们不需要?我知道不同的选项是python setup.py develop -u,pip uninstall library,pip uninstall -e .和pip uninstall -r requirements.txt。那么,我们在哪种情况下应该做哪一件事,以及哪个需要手工删除多余的东西(对于什么版本的pip和python,我们不需要担心通过手工删除东西)?
-
对我来说,pip uninstall library正常工作。如果您回答问题,那么OP可能对他的已损坏的库有些奇怪。希望这可以节省人们下次来这里的时间。虽然,有许多不同的选择可能会起作用。
-
@CharlieParker是的pathtopythonX.Y -m pip uninstall library应该可以工作。如果没有,则可能在某些时候出了问题。
-
@sinoroc我的观点是pip uninstall library应该可以工作,并且正如OP在他对自己赢得的问题的回答中所承认的那样,最有可能导致事情不与他合作的原因是他的计算机和装置处于怪异状态。
在{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选项安装的软件包,卸载也可以正常进行。
-
@famousgarkin为了使大家都清楚,您指的是哪个版本?谢谢
-
@glarrain哦,抱歉,不完整,其点子版本1.5.4,Im目前正在使用此版本
-
@famousgarkin太奇怪了,因为我使用的是pip 1.5.6,我不得不从两个地方删除它,因为在这里提到了stackoverflow.com/a/18818891/740067
-
对于pip 8.1.1,这仍然是一个需要手动修改的问题。
-
对我来说使用8.1.2,pip uninstall package_name可以工作,但是pip uninstall .不能工作
-
这里有一个针对pip的未解决问题,因为它可以删除可编辑安装的软件包。
-
请参阅相关的stackoverflow.com/a/3623868/642372。事实证明pip只是使用setuptools开发模式。 python setup.py develop --uninstall
-
点子19.2.2仍然是一个问题
-
如果您同时使用pip和conda,我想这些说明不起作用?我在我的环境中的~anaconda3envsmyenv中找不到诸如site-packages之类的东西...如果我将其与pip install -e一起安装,但我也在使用conda,该怎么办?
-
我对如此之多的答案感到困惑。我们到底需要做什么?在什么情况下,我们需要手动删除东西,而在哪些情况下我们不需要?我知道不同的选项是python setup.py develop -u,pip uninstall library,pip uninstall -e .和pip uninstall -r requirements.txt。那么,我们在哪种情况下应该做哪一件事,以及哪个需要手工删除多余的东西(对于什么版本的pip和python,我们不需要担心通过手工删除东西)?
-
对我来说,pip uninstall library正常工作。如果您回答问题,那么OP可能对他的已损坏的库有些奇怪。希望这可以节省人们下次来这里的时间。虽然,可能有许多不同的选择
使用新版本的setup_tools进行此操作的更简单方法是运行以下命令:
1
| python setup.py develop -u |
基本上与@glarrain在其答案中描述的功能相同。
-
该命令应该有任何输出吗?我得到它说running develop,但我仍然是.egg-info文件...是否应该删除它?
-
具有此答案的"新版本的setup_tools"是什么?你能确认一下吗?
-
您的答案是否可以确保您不必手动去除薄片?
-
它不产生任何输出。根据我的理解,应将其删除:" --uninstall,-u取消部署当前项目。您可以使用--install-dir或-d选项指定暂存区域。创建的.egg-link文件将如果存在,并且仍指向项目目录,则将其删除。"来自setuptools docs。运行此命令后,是否仍从开发目录加载内容?
-
@CharlieParker我不确定引入的版本。我从不需要手动删除这些文件。
-
对我来说,pip uninstall library正常工作。如果您回答问题,那么OP可能对他的已损坏的库有些奇怪。希望这可以节省人们下次来这里的时间。虽然,可能有许多不同的选择
使用cmd安装开发包:
1
| pip install --editable . |
卸载:
1
| rm -r $(find . -name '*.egg-info') |
现在您可以使用:
1
| pip uninstall package_name |
或python setup.py develop --uninstall或python setup.py develop -u
-
您能否指定第二条命令的运行位置?
-
@ethanabrooks .是当前目录,您使用包的完整绝对路径。
-
不完整那所有的Python包呢? (site-packages目录)
-
这不会完全撤消安装。它会从安装软件包的文件夹中删除内容,但不会删除dist-packages目录(Python在其中查找已安装软件包的目录)中的符号链接。可以使用python setup.py develop -u进行清洁。
-
@MarkAmery谢谢,pip uninstall package_name现在工作。
-
您的答案与python setup.py develop -u有什么不同?
-
@Charlie pathtopythonX.Y setup.py develop --uninstall也应该卸载,但我建议改用点子方式。
-
对我来说,pip uninstall library正常工作。如果您回答问题,那么OP可能对他的已损坏的库有些奇怪。希望这可以节省人们下次来这里的时间。虽然,可能有许多不同的选择
这是使用操作系统安装的pip(对我而言是v8.1.1)在debian / ubuntu linux上的错误,即使升级了pip(例如,get-pip.py),也要使用sudo pip调用它。参见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, and apt packages to /usr/lib/python2.7/dist-packages
...a few packages were installed in ~/.local/lib too.
对于我的系统,我需要删除的是/usr/local/lib/python2.7/dist-packages/{package_name}.egg-link
-
对我来说,pip uninstall library正常工作。如果您回答问题,那么OP可能对他的已损坏的库有些奇怪。希望这可以节省人们下次来这里的时间。虽然,可能有许多不同的选择
原来,我的安装已损坏。
我可以在以下位置找到条目:
1
| /usr/local/lib/python2.7/site-packages/easy-install.pth |
为了解决该问题,我手动删除了.pth文件中的行!
1 2 3 4
| import sys; sys.__plen = len(sys.path)
...
/absolute-path-to/horus # <- I removed this line
... |
只需卸载以"可编辑"模式安装的软件包:
1
| pip uninstall yourpackage |
-
OP对此进行了尝试,并在他的问题中这样说。这不一定适用于以可编辑方式安装的软件包
-
@dusktreader:我不知道OPs pip uninstall命令(可能是pip的过时版本)是怎么回事,但我已经验证了在正常情况下,它确实可以完成@glarrain所建议的手动操作。如果对您不起作用,请在此处详细说明您的操作,以便我们进一步探讨问题。
-
@Apteryx等等,您是说即使在可编辑模式下也可以使用?
-
这个答案对我有用。我认为这对OP无效,因为如果您检查他的回答,他的安装会有些奇怪的损坏(或者他的计算机处于奇怪的状态)。 pip uninstall pkg可用于afaik。