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

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

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

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

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

但我得到了:

no such option: --user

除了手动查找和删除软件包之外,如何卸载我使用 pip install --user 安装的软件包?

我发现了这篇文章

pip cannot uninstall from per-user site-packages directory

其中描述了不支持从用户目录卸载软件包 . 根据文章,如果它是正确实施然后与

pip uninstall [package-name]

安装的软件包也将在用户目录中搜索 . 但问题仍然存在 . 如果在系统范围内和每个用户安装相同的软件包怎么办?如果有人需要定位特定的用户目录怎么办?

回答(5)

2 years ago

在Linux上使用Python 3.5和pip 7.1.2测试了这个,情况似乎如下:

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

  • 无论 somepackage 是否同时也在系统范围内安装,都是如此 .

  • 如果在两个位置都安装了软件包,则只会卸载本地软件包 . 要使用 pip 在系统范围内卸载软件包,请首先在本地卸载它,然后使用 root 权限再次运行相同的卸载命令 .

  • 除了预定义的用户安装目录外, pip install --target somedir somepackage 还会将软件包安装到 somedir 中 . 无法使用 pip 从这样的位置卸载软件包 . (但是在Github上有一个有点旧的未合并拉取请求,它实现了 pip uninstall --target . )

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

2 years ago

在MacOS上卸载软件包'oauth2client'的示例:

pip uninstall oauth2client

2 years ago

答案是 Not possible yet . 您必须手动删除它 .

2 years ago

正如@ thomas-lotze所提到的,目前pip工具不会这样做,因为没有相应的--user选项 . 但我发现我可以检入〜/ .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

然后只需使用特定的pip版本卸载 .

2 years ago

我正在运行Anaconda版本4.3.22和python3.6.1环境,并遇到了这个问题 . 这是历史和修复:

pip uninstall opencv-python # -- the original step. failed.

ImportError: DLL load failed: The specified module could not be found.

我这样做进入我的python3.6环境并得到了这个错误 .

python -m pip install opencv-python # same package as above.
conda install -c conda-forge opencv # separate install parallel to opencv
pip-install opencv-contrib-python # suggested by another user here. doesn't resolve it.

接下来,我尝试下载python3.6并将python3.dll放在文件夹和各种文件夹中 . 没有改变 .

最后,这修复了它:

pip uninstall opencv-python

(另一个conda-forge版本仍然安装)这只留下了conda版本,并且工作在3.6 .

>>>import cv2
>>>

工作!