如何卸载pip install——user

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

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

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

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

但我得到了:

no such option: --user

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

我找到了这篇文章

pip无法从每个用户站点-packages目录中卸载

说明不支持从用户目录卸载包。根据这篇文章,如果它被正确执行,那么

pip uninstall [package-name]

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

498259 次浏览

在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”包的示例:

pip uninstall oauth2client

正如@thomas-lotze所提到的,目前pip工具不能做到这一点,因为没有相应的——user选项。但是我发现我可以签入~/。Local /bin并查找特定的pipi#。#在我看来,它对应于——user选项。

在我的例子中:

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

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

我正在运行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
>>>

工作!

不过,对于那些使用pip install --user some_pkg 在虚拟环境中的人要小心。

$ path/to/python -m venv ~/my_py_venv
$ source ~/my_py_venv/bin/activate
(my_py_venv) $ pip install --user some_pkg
(my_py_venv) $ pip uninstall some_pkg
WARNING: Skipping some_pkg as it is not installed.
(my_py_venv) $ pip list
# Even `pip list` will not properly list the `some_pkg` in this case

在这种情况下,你必须禁用当前虚拟环境,然后使用相应的python/pip可执行文件来列出或卸载用户站点包:

(my_py_venv) $ deactivate
$ path/to/python -m pip list
$ path/to/python -m pip uninstall some_pkg

注意这个问题是几年前报道的吗.;而且似乎目前的结论是:--user在虚拟环境的pip中是无效的,因为用户位置对于虚拟环境并没有真正意义。

我强烈建议您使用虚拟环境进行python包安装。使用virtualenv,可以防止任何包冲突,并与python相关的用户域命令完全隔离。

要删除全局安装的所有包,请遵循以下命令;

可以卸载带有--user标志的包。这个方法对我很有效;

pip freeze --user | xargs pip uninstall -y

对于python 3;

pip3 freeze --user | xargs pip3 uninstall -y

但不知何故,这些命令不能卸载setuptools和pip。在这些命令之后(如果你真的想要干净的python),你可以用;

pip uninstall setuptools && pip uninstall pip

现在你有了干净的python环境。您可以创建virtualenv并在其中安装包。