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

Ser*_*jik 181 python pip virtualenv python-3.x

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

pip install --user [python-package-name]
Run Code Online (Sandbox Code Playgroud)

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

pip uninstall --user [python-package-name]
Run Code Online (Sandbox Code Playgroud)

但我得到了:

no such option: --user
Run Code Online (Sandbox Code Playgroud)

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

我发现了这篇文章

pip无法从每个用户的site-packages目录中卸载

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

pip uninstall [package-name]
Run Code Online (Sandbox Code Playgroud)

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

Tho*_*tze 168

在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 点在我的系统上似乎并不成立。我在“/usr/lib64/python2.7/site-packages/”中安装了一个系统包“jedi”。当我这样做时,作为普通用户:`pip install --user jedi`然后`pip uninstall jedi`,pip尝试卸载`/usr/lib64/python2.7/site-packages/jedi`然后用`权限被拒绝`。因此,如果卸载命令不存在 `--user` ,我如何告诉 uninstall *not* 尝试卸载 `/usr/lib64/python2.7/site-packages/jedi` 但 `~/.local /lib64/python3.6/site-packages/jedi`? (4认同)
  • 这些语句对于在虚拟环境中运行 pip 是否准确? (2认同)

Huy*_*rit 24

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

pip uninstall oauth2client
Run Code Online (Sandbox Code Playgroud)

  • 不知道为什么它有这么多的赞成票,因为它是错误的答案。这根本不指定 --user 标志,如果您以 root 和用户身份安装了软件包,则用户安装的软件包将保留。 (7认同)
  • @misantroop 仔细阅读答案。它陈述了与接受的答案相同的内容(但解释较少) (2认同)

thi*_*ras 12

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

要删除全局安装的所有软件包,请遵循以下步骤;

可以卸载使用--userflag安装的软件包。这个对我有用;

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 并在其中安装包。


sor*_*rin 5

答案是目前还不可能。您必须手动将其删除。


YaO*_*OzI 5

但是,对于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
Run Code Online (Sandbox Code Playgroud)

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

(my_py_venv) $ deactivate
$ path/to/python -m pip list
$ path/to/python -m pip uninstall some_pkg
Run Code Online (Sandbox Code Playgroud)

请注意,此问题是几年前报告的。似乎当前的结论是:在虚拟环境中--user无效pip,因为用户位置对于虚拟环境实际上没有任何意义。

  • 太晚了!,我在虚拟环境中使用了“--user”,有什么方法可以恢复它吗?因为“pip list”不起作用...... (4认同)
  • “目前的结论似乎是:--user 在虚拟环境的 pip 中无效,因为用户位置对于虚拟环境来说并没有真正的意义。” 同意。用户安装违背了虚拟环境的全部目的。不幸的是,有很多人这样做的坏例子。 (3认同)