如何卸载使用pip install –user安装的软件包

有一个可以为每个用户安装一个Python包的pip的--user选项:

 pip install --user [python-package-name] 

我使用这个选项在我没有root权限的服务器上安装一个软件包。 我现在需要的是卸载当前用户安装的软件包。 我试图执行这个命令:

 pip uninstall --user [python-package-name] 

但是我得到了:

 no such option: --user 

如何卸载我用pip install --user安装的软件包,而不是手动查找和删除软件包?

我find了这篇文章

pip不能从每个用户的site-packages目录中卸载

其中描述了不支持从用户目录中卸载软件包。 根据文章是否正确执行然后用

 pip uninstall [package-name] 

安装的软件包也将在用户目录中search。 但问题仍然存在。 如果同一个软件包同时安装在系统范围内和用户范围内,会怎样? 如果有人需要定位特定的用户目录呢?

在Linux上使用Python 3.5和pip 7.1.2进行testing后,情况似乎是这样的:

  • pip install --user somepackage安装到$HOME/.local ,并卸载它使用pip uninstall somepackage

  • 无论是否同时在系统中安装somepackage情况也是如此。

  • 如果软件包安装在两个地方,只有本地软件将被卸载。 要使用pip在系统范围内卸载软件包,请先在本地卸载该软件包,然后使用root权限再次运行相同的卸载命令。

  • 除了预定义的用户安装目录之外, pip install --target somedir somepackage会将软件包安装到somedir 。 没有办法使用pip从这样的地方卸载软件包。 (但是在Github上有一个稍微老的未实现的pull请求,它实现了pip uninstall --target 。)

  • 由于唯一的pip将从系统范围和预定义的用户本地pip uninstall ,因此您需要运行pip uninstall作为相应的用户从给定用户的本地安装目录中卸载。

例如在MacOS上卸载软件包“oauth2client”:

 pip uninstall oauth2client 

答案是不可能的 。 你必须手动删除它。

正如@ thomas-lotze所提到的那样,目前的pip工具并没有这样做,因为没有对应的用户选项。 但是我发现我可以在〜/ .local / bin中查找,并查找特定的pip#。#,这对我来说就像它对应于–user选项。

在我的情况下:

 antho@noctil  ~/.l/bin  pwd /home/antho/.local/bin antho@noctil  ~/.l/bin  ls pip* pip pip2 pip2.7 pip3 pip3.5 

然后只需卸载具体的点子版本。