有没有办法使用pip一次性卸载多个软件包?

47
我正在尝试删除所有已安装的以"pyobjc-framework"为前缀的软件包。我已经尝试了以下方法:
% pip freeze | grep pyobjc-framework | xargs pip uninstall

但是这个问题很烦人,因为每次 pip 卸载都需要确认(也许有办法绕过这个问题)。
在我不得不一个个手动卸载它们之前,请帮忙解决!没人想要那样做。

Windows怎么样? - huang
7个回答

78

如果您在 pip 命令后添加 -y | --yes 标志,实际上您的命令应该正常工作。 :-)

-y, --yes 不要询问卸载删除的确认。

可能是这样的:

% pip freeze | grep pyobjc-framework | xargs pip uninstall -y


太好了,-y是我需要的标志。我还需要xargs一次传递单个参数,所以我的最终命令看起来像这样:%pip freeze | grep pyobjc-framework | xargs -n 1 sudo pip uninstall -y谢谢! - wh1tney

16
将grep的输出重定向到一个新文件并运行。
pip uninstall -r <file name>

我觉得这个可以。

pip freeze | grep pyobjc > packages_to_remove.txt
sudo pip uninstall -y -r packages_to_remove.txt

1
抱歉。使用 pip freeze | grep pyobjc > packages_to_remove.txt; sudo pip uninstall -y -r packages_to_remove.txt 命令即可。请注意,当同时使用 -r 标志和文件参数时,-y 标志必须放在前面。唉。 - wh1tney

10

我总是使用这个:

pip freeze | xargs pip uninstall -y

如果没有 grep 命令,它将删除所有 pip 安装的包。 - Timo

6

最简单的方法,例如使用去除所有torch相关的软件包:

pip uninstall `pip freeze | grep torch`

3

将这些包准备成列表:

pip uninstall <list of requirement> -y
e.g.:
pip uninstall  termcolor, imgviz, matplotlib, PyYAML, qtpy, Pillow, colorama, PyQt5, numpy -y
(Some version of pip require to remove commas, s. below)
pip uninstall termcolor imgviz matplotlib -y 

例如:使用pip卸载带有依赖关系的软件包,需要三个步骤:
  1. 显示依赖列表
  2. 删除软件包
  3. 删除其依赖项列表(从1中复制)

详细步骤:

 1. pip show <package>

    e.g.:
    pip show labelme
    ...
    Requires: termcolor, imgviz, matplotlib, PyYAML, qtpy, Pillow, colorama, PyQt5, numpy
    ...

 2. pip uninstall <package>
    e.g.
    pip uninstall labelme

 3. pip uninstall <list of requirement> -y
    e.g.:
    pip uninstall  termcolor, imgviz, matplotlib, PyYAML, qtpy, Pillow, colorama, PyQt5, numpy -y

我怀疑你能否用逗号分隔这些名字。你对此100%确定吗? - sinoroc
是的,它至少可以在Ubuntu 20.04、Python 3.9和Pip 20.3.3上工作。 - Jaja
好的,也许吧,不确定为什么它能工作。我也不确定为什么你想推荐这种不寻常的符号表示法。为什么不坚持标准符号表示法呢? - sinoroc
在某些情况下,需要注意细节:例如,在查看需求文件时更快。 - Jaja
在bash中失败... $ pip uninstall xlsxwriter, xlrd 错误:无效的要求:'xlsxwriter,' - Rich - enzedonline

1

运行 pip freeze 命令后返回以下结果:

Usage:   
  pip uninstall [options] <package> ...
  pip uninstall [options] -r <requirements file> ...

no such option: -e

所以我改用pip list来完成它:
$ pip list | grep tempest | xargs pip uninstall -y

Uninstalling neutron-tempest-plugin-0.0.0:
  Successfully uninstalled neutron-tempest-plugin-0.0.0
Uninstalling octavia-tempest-plugin-0.0.0:
  Successfully uninstalled octavia-tempest-plugin-0.0.0
Uninstalling tempest-19.0.1.dev152:
  Successfully uninstalled tempest-19.0.1.dev152

1

请运行pip uninstall -y -r <(pip freeze)命令


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接