删除pip安装的所有软件包的最简单方法是什么?

blu*_*lds 522 python pip

我正在尝试修复我的一个virtualenvs - 我想将所有已安装的库重置为与生产相匹配的库.

使用pip有一种快速简便的方法吗?

blu*_*lds 810

我发现这个片段作为替代解决方案.与重塑virtualenv相比,它更优雅地删除了库:

pip freeze | xargs pip uninstall -y
Run Code Online (Sandbox Code Playgroud)

如果您通过VCS安装了软件包,则需要排除这些行并手动删除软件包(从下面的评论中提升):

pip freeze | grep -v "^-e" | xargs pip uninstall -y
Run Code Online (Sandbox Code Playgroud)

  • @mRyan `pip list --format=freeze |xargs pip uninstall -y` 帮我解决了这个问题 (16认同)
  • `错误:无效要求:'@'` 我有从我的 gitlab 安装的软件包。 (11认同)
  • `pip freeze` 列出了所有软件包,包括操作系统中安装的软件包。如果没有 root 权限,用户将无法(并且可能不想)删除它们。`pip freeze --user` 对我有用。 (9认同)
  • 你也可以使用`pip freeze --exclude-editable | xargs pip uninstall -y`忽略VCS包而不使用grep模式 (7认同)
  • 运行后我意识到它删除了`setuptools`包.我按照以下说明解决了问题:http://stackoverflow.com/questions/7446187/no-module-named-pkg-resources (5认同)
  • 我发现这是一个很好的解决方案,纯粹是因为它没有完全删除虚拟环境 - 我可能已经对例如`postactivate`进行了更改,这将保留. (4认同)
  • 我必须运行`pip freeze | xargs -I {} pip uninstall -y {}` 但这对我有用。 (2认同)
  • 要卸载可编辑包,请参阅 /sf/ask/1214263361/ (2认同)
  • 不适用于 Azure Notebooks:“错误:无法卸载“bitarray”。这是一个 distutils 安装项目,因此我们无法准确确定哪些文件属于它,这将导致仅部分卸载。 (2认同)
  • 如果您使用的是 Windows,则无法在命令提示符中运行此命令,因为您没有使用 xargs、cut 等。但是,如果您安装了 git,则可能也安装了 git bash,并且可以运行此命令在 git bash shell 中 (2认同)

Har*_*iya 253

这适用于所有Mac,Windows和Linux系统.要获取requirements.txt文件中所有pip包的列表(注意:这将覆盖requirements.txt,如果存在则会创建新的.)

pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

现在逐一删除

pip uninstall -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

如果我们想立即删除所有

pip uninstall -r requirements.txt -y
Run Code Online (Sandbox Code Playgroud)

如果您正在处理具有requirements.txt文件并且环境已经分歧的现有项目,只需使用requirements.txt上面的示例替换即可toberemoved.txt.然后,一旦完成上述步骤,您就可以使用它requirements.txt来更新现在干净的环境.

对于没有创建任何文件的单个命令(如建议的joeb).

pip uninstall -y -r <(pip freeze)
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用`pip uninstall -y -r <(pip freeze)`一次完成所有操作. (43认同)
  • 可能值得一提的是,你是强制覆盖他们的requirements.txt文件,万一他们不知道.:) (10认同)
  • 此外,如果要删除所有包,则附加"-y"将执行此操作.示例:`pip uninstall -r requirements.txt -y` (4认同)
  • 在我看来,这是最好的答案。 (2认同)

Rob*_*kal 103

我认为这适用于最新的

virtualenv --clear MYENV
Run Code Online (Sandbox Code Playgroud)

  • 这有效地与运行`wipeenv`相同吗?http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html#wipeenv (7认同)
  • `wipeenv`是由virtualenvwrapper提供的别名,所以不是每个人都有它. (2认同)
  • 好吧,这是一个肮脏的把戏,但就像魔术一样。我希望每个人都使用pip卸载-r requirements.txt -y。它可以很好地清理。 (2认同)

Tay*_*ton 69

我想从评论部分提出这个答案,因为它是该主题中最优雅的解决方案之一.这个答案完全归功于@joeb.

pip uninstall -y -r <(pip freeze)
Run Code Online (Sandbox Code Playgroud)

这对我来说很有用,因为在virtualenv的上下文之外清除我的用户包文件夹,许多上述答案都没有处理.

编辑:任何人都知道如何使这个命令在Makefile中工作?

额外奖励:bash别名

为方便起见,我将此添加到我的bash配置文件中:

alias pipuninstallall="pip uninstall -y -r <(pip freeze)"
Run Code Online (Sandbox Code Playgroud)

然后运行:

pipuninstallall
Run Code Online (Sandbox Code Playgroud)

pipenv的替代品

如果您碰巧使用pipenv,您可以运行:

pipenv uninstall --all
Run Code Online (Sandbox Code Playgroud)

  • 应该很容易#1 (8认同)
  • make 默认使用 sh,但替换语法 `&lt;(...)` 是一种bashism。所以你可以使用 bash -c "...",或者通过执行 `pip freeze | 来解决。pip卸载 -r /dev/stdin` (2认同)
  • 不适用于 Azure Notebooks:“错误:无法卸载“bitarray”。这是一个 distutils 安装项目,因此我们无法准确确定哪些文件属于它,这将导致仅部分卸载。 (2认同)

neh*_*iah 46

使用pip listpip freeze 必须包含--local其他答案的其他答案也将卸载在公共命名空间中找到的包.

所以这里是我经常使用的片段

 pip freeze --local | xargs pip uninstall -y
Run Code Online (Sandbox Code Playgroud)

要么

 pip freeze --local | xargs pip uninstall -y
Run Code Online (Sandbox Code Playgroud)

通过发布了解有关此行为的更多信息 pip freeze --help


Sur*_*yaa 38

方法1(带pip freeze)

pip freeze | xargs pip uninstall -y
Run Code Online (Sandbox Code Playgroud)

方法2(带pip list)

pip list | awk '{print $1}' | xargs pip uninstall -y
Run Code Online (Sandbox Code Playgroud)

方法3(带virtualenv)

virtualenv --clear MYENV
Run Code Online (Sandbox Code Playgroud)

  • 方法2(`pip list`)很有效,直到你有点意外卸载自己-_- (6认同)
  • sudo是没有必要的,并且在没有仔细考虑的情况下使用它可能很危险,因为它会影响全局机器设置.请参阅此答案,例如:http://stackoverflow.com/questions/15028648/is-it-acceptable-safe-to-run-pip-install-under-sudo (2认同)

Pri*_*ign 36

我通过执行以下操作来管理它:

  1. 创建reqs.txt使用当前安装的软件包列表调用的需求文件
pip freeze > reqs.txt
Run Code Online (Sandbox Code Playgroud)
  1. 然后卸载所有的包 reqs.txt
# -y means remove the package without prompting for confirmation
pip uninstall -y -r reqs.txt
Run Code Online (Sandbox Code Playgroud)

我喜欢这种方法,因为如果你犯了错误,你总是有一个 pip 需求文件可以依靠。它也是可重复的,并且是跨平台的(Windows、Linux、MacOs)。


Sat*_*hia 28

从虚拟环境中删除所有包的最佳方法。

Windows PowerShell:

pip freeze > unins ; pip uninstall -y -r unins ; del unins
Run Code Online (Sandbox Code Playgroud)

Windows 命令提示符:

pip freeze > unins && pip uninstall -y -r unins && del unins
Run Code Online (Sandbox Code Playgroud)

Linux:

pip3 freeze > unins ; pip3 uninstall -y -r unins ; rm unins
Run Code Online (Sandbox Code Playgroud)


Ned*_*der 20

最快的方法是完全重塑virtualenv.我假设你有一个匹配生产的requirements.txt文件,如果没有:

# On production:
pip freeze > reqs.txt

# On your machine:
rm $VIRTUALENV_DIRECTORY
mkdir $VIRTUALENV_DIRECTORY
pip install -r reqs.txt
Run Code Online (Sandbox Code Playgroud)

  • 这是否可以解决安装了可编辑安装(基本上是setuptools开发模式安装)的情况,该安装创建了本地.egg-info文件,然后干扰了其余的安装/卸载过程?因为它是一组文件,所以它似乎不知道如何处理它们的存在,并且不卸载任何东西,而是使MYENV下的本地目录结构完整:`&gt; MYENV / bin / python3.4中的新python可执行文件&gt;另外在MYENV / bin / python中创建可执行文件&gt;安装setuptools,pip,wheel ...完成。但是MYENV尚未重置环境! (2认同)

Dea*_*ean 20

我使用 --user 选项卸载用户站点中安装的所有软件包。

pip3 freeze --user | xargs pip3 uninstall -y
Run Code Online (Sandbox Code Playgroud)


Ric*_*ior 16

在Windows上,如果path配置正确,您可以使用:

pip freeze > unins && pip uninstall -y -r unins && del unins
Run Code Online (Sandbox Code Playgroud)

对于类Unix系统应该是类似的情况:

pip freeze > unins && pip uninstall -y -r unins && rm unins
Run Code Online (Sandbox Code Playgroud)

只是警告说这不是完全可靠的,因为你可能遇到诸如"找不到文件"之类的问题,但它仍然可以在某些情况下起作用

编辑:为清楚起见:unins是一个任意文件,在执行此命令时会向其写入数据:pip freeze > unins

然后,通过默认同意/事先批准,将依次写入的文件用于卸载上述软件包 pip uninstall -y -r unins

该文件最终在完成时被删除.


小智 14

使用virtualenvwrapper函数:

wipeenv
Run Code Online (Sandbox Code Playgroud)

请参阅wipeenv文档

  • 如果您使用的是virtualenvwrapper,请输入[```wipeenv```](http://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html#managing-installed-packages) (6认同)

sha*_*fik 13

首先,将所有软件包添加到 requirements.txt

pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

然后删除所有

pip uninstall -y -r requirements.txt 
Run Code Online (Sandbox Code Playgroud)


Sat*_*hia 11

从虚拟环境中删除所有软件包的最佳方法

Windows环境使用以下命令:

pip freeze > unins && pip uninstall -y -r unins && del unins
Run Code Online (Sandbox Code Playgroud)

Linux 环境使用以下命令:

pip freeze > unins && pip uninstall -y -r unins && rm unins
Run Code Online (Sandbox Code Playgroud)


You*_*ode 10

pip uninstall `pip freeze --user`
Run Code Online (Sandbox Code Playgroud)

--user选项可防止系统安装的软件包包含在列表中,从而避免/usr/lib权限distutils错误。


Cra*_*ack 9

我知道这是一个老问题,但是我确实偶然发现了这个问题,以便将来参考,您现在可以这样做:

pip uninstall [options] <package> ...
pip uninstall [options] -r <requirements file> ...
Run Code Online (Sandbox Code Playgroud)

-r,-要求文件

卸载给定需求文件中列出的所有软件包。此选项可以多次使用。

pip文档版本8.1


小智 7

对于Windows用户,这是我在Windows PowerShell上使用的

 pip uninstall -y (pip freeze)
Run Code Online (Sandbox Code Playgroud)


obo*_*zat 6

pip3 freeze --local | xargs pip3 uninstall -y
Run Code Online (Sandbox Code Playgroud)

情况可能是必须多次运行此命令才能获得空的pip3 freeze --local.


Thi*_*net 5

(将此添加为答案,因为我没有足够的声誉来评论@blueberryfields的答案)

@blueberryfields的答案很好用,但如果没有要卸载的软件包则失败(如果此“全部卸载”是脚本或makefile的一部分,则可能是一个问题)。这可以通过xargs -r使用GNU版本的来解决xargs

pip freeze --exclude-editable | xargs -r pip uninstall -y
Run Code Online (Sandbox Code Playgroud)

来自man xargs

-r,--no-run-if-empty

如果标准输入不包含任何非空格,请不要运行该命令。通常,即使没有输入,命令也会运行一次。此选项是GNU扩展。