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

时间:2015-10-29 11:27:44

标签: python python-3.x pip

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]

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

8 个答案:

答案 0 :(得分:136)

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

答案 1 :(得分:24)

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

pip uninstall oauth2client

答案 2 :(得分:3)

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

答案 3 :(得分:2)

正如@ thomas-lotze所提到的,目前pip工具不会这样做,因为没有相应的--user选项。但我发现我可以检入〜/ .local / bin并查找特定的pip#。#,它看起来像是对应于--user选项。

就我而言:

private readonly DbContext _dbContext;
//
dbContext.Set<T>(); // T is BaseEntity

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

答案 4 :(得分:2)

对于在虚拟环境中使用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

请注意,此问题was reported few years ago。看来current conclusion是:--user在虚拟环境的pip内部无效,因为用户位置对于虚拟环境而言实际上没有任何意义。

答案 5 :(得分:1)

我认为可以卸载带有--user标志的软件包。这对我有用;

pip freeze --user | xargs pip uninstall -y

对于python 3;

pip3 freeze --user | xargs pip3 uninstall -y

但是以某种方式,这些命令不会安装setuptools。在执行这些命令(如果您确实想要干净的python)之后,可以使用以下命令将其删除;

pip uninstall setuptools && pip uninstall pip

答案 6 :(得分:0)

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

工作!

答案 7 :(得分:-1)

您可以一次卸载所有软件包。

1. First, install pip-purge.

  pip install pip-purge

2. Then, Run

    pip-purge

确保仅在virtualenv中运行