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]
安装的软件包也将在用户目录中搜索。但问题仍然存在。如果在系统范围内和每个用户安装相同的软件包怎么办? 如果有人需要定位特定用户目录怎么办?
答案 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中运行