关于python:如何使用pip install –user卸载package

How to uninstall a package installed with pip install --user

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

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

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

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

但我得到了:

1
no such option: --user

除了手动查找和删除包外,我如何卸载与pip install --user一起安装的包?

我找到了这篇文章

PIP无法从每个用户站点包目录中卸载

说明不支持从用户目录卸载包。根据文章,如果它是正确实现的,那么

1
pip uninstall [package-name]

安装的包也将在用户目录中搜索。但我仍然有一个问题。如果在系统范围内和每个用户都安装了相同的软件包呢?如果有人需要针对特定的用户目录呢?


在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以从给定用户的本地安装目录中卸载。


在MacOS上卸载包"oauth2client"的示例:

1
pip uninstall oauth2client


正如@thomas lotze所提到的,当前PIP工具不会这样做,因为没有相应的--user选项。但是我发现我可以签入~/.local/bin并查找特定的pip,在我看来它与--user选项对应。

在我看来:

1
2
3
4
antho@noctil: ~/.l/bin$ pwd
/home/antho/.local/bin
antho@noctil: ~/.l/bin$ ls pip*
pip  pip2  pip2.7  pip3  pip3.5

然后用特定的PIP版本卸载。


答案还不可能。你必须手动移除它。


您可以一次卸载所有包。

1
2
3
4
5
6
7
1. First, install pip-purge.

  pip install pip-purge

2. Then, Run

    pip-purge

确保只在virtualenv中运行


我运行的是Python版本4.3.22和python3.6.1环境,出现了这个问题。历史和解决方法如下:

1
2
3
pip uninstall opencv-python # -- the original step. failed.

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

我在python3.6环境中做了这个操作,得到了这个错误。

1
2
3
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放在文件夹和各种文件夹中。没有改变。

最后,这解决了它:

1
pip uninstall opencv-python

(另一个Conda Forge版本仍然安装)这只剩下Conda版本,在3.6中工作。

1
2
>>>import cv2
>>>

工作!