如何删除 pip 安装的所有软件包?

2025-01-09 08:47:00
admin
原创
10
摘要:问题描述:如何从我当前激活的虚拟环境中卸载 pip 安装的所有包?解决方案 1:我发现这个代码片段是另一种解决方案。与重建虚拟环境相比,它可以更优雅地删除库:pip freeze | xargs pip uninstall -y 如果您通过 VCS 安装了软件包,则需要排除这些行并手动删除软件包(从下面的评论...

问题描述:

如何从我当前激活的虚拟环境中卸载 pip 安装的所有包?


解决方案 1:

我发现这个代码片段是另一种解决方案。与重建虚拟环境相比,它可以更优雅地删除库:

pip freeze | xargs pip uninstall -y

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

pip freeze --exclude-editable | xargs pip uninstall -y

如果你直接从 github/gitlab 安装软件包,那么这些软件包将具有@。例如:

django @ git+https://github.com/django.git@<sha>

您可以添加cut -d "@" -f1以仅获取卸载所需的包名称。

pip freeze | cut -d "@" -f1 | xargs pip uninstall -y

解决方案 2:

这适用于所有 Mac、Windows 和 Linux 系统。获取 requirements.txt 文件中所有 pip 包的列表(注意:如果 requirements.txt 存在,这将覆盖它,否则将创建新的,此外,如果您不想替换旧的 requirements.txt,请在所有以下命令中用不同的文件名代替 requirements.txt)。

pip freeze > requirements.txt

现在逐个删除

pip uninstall -r requirements.txt

如果我们想一次性删除所有内容,那么

pip uninstall -r requirements.txt -y

如果您正在处理包含文件的现有项目requirements.txt,并且您的环境已经发生变化,只需将requirements.txt上述示例中的 替换为即可toberemoved.txt。然后,完成上述步骤后,您可以使用requirements.txt来更新现在干净的环境。

并且对于单个命令而不创建任何文件,正如@joeb建议的那样

pip uninstall -y -r <(pip freeze)

解决方案 3:

我想将此答案从评论部分中移除,因为它是该主题中最优雅的解决方案之一。此答案的全部功劳归于@joeb。

pip uninstall -y -r <(pip freeze)

对于我来说,这非常有用,因为它可以在虚拟环境上下文之外清除用户包文件夹,而上述许多答案都无法处理这种情况。

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

奖励:bash 别名

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

alias pipuninstallall="pip uninstall -y -r <(pip freeze)"

然后运行:

pipuninstallall

Pipenv 的替代方案

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

pipenv uninstall --all

诗歌的替代品

如果你正在使用Poetry,请运行:

poetry env remove --python3.9

(请注意,您需要更改那里的版本号以匹配您的 Python 版本。)

解决方案 4:

这适用于最新版。我认为这是最简短、最具声明性的方法。

virtualenv --clear MYENV

但是为什么不直接删除并重新创建虚拟环境呢?

不变性规则。此外,很难记住其他解决方案使用的所有管道和 grep。

解决方案 5:

我通过执行以下操作来解决这个问题:

  1. reqs.txt创建使用当前安装的软件包列表调用的需求文件

pip freeze > reqs.txt
  1. 然后卸载所有软件包reqs.txt

# -y means remove the package without prompting for confirmation
pip uninstall -y -r reqs.txt

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

解决方案 6:

pip list其他使用或pip freeze 必须包含--local的答案否则它还将卸载在公共命名空间中找到的包。

以下是我经常使用的代码片段

 pip freeze --local | xargs pip uninstall -y

参考:pip freeze --help

解决方案 7:

方法 1(使用pip freeze

pip freeze | xargs pip uninstall -y

方法 2(使用pip list

pip list | awk '{print $1}' | xargs pip uninstall -y

方法 3(使用virtualenv

virtualenv --clear MYENV

解决方案 8:

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

Windows PowerShell:

pip freeze > unins ; pip uninstall -y -r unins ; del unins

Windows 命令提示符:

pip freeze > unins && pip uninstall -y -r unins && del unins

Linux:

pip3 freeze > unins ; pip3 uninstall -y -r unins ; rm unins

解决方案 9:

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

pip freeze > unins && pip uninstall -y -r unins && del unins

对于类 Unix 系统来说情况应该类似:

pip freeze > unins && pip uninstall -y -r unins && rm unins

需要注意的是,这种方法并不完全可靠,因为你可能会遇到诸如“文件未找到”之类的问题,但在某些情况下这种方法仍然有效

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

然后,它写入的文件用于通过以下方式卸载上述软件包,并获得默示同意/事先批准:pip uninstall -y -r unins

完成后文件最终被删除。

解决方案 10:

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

pip3 freeze --user | xargs pip3 uninstall -y

解决方案 11:

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

 pip uninstall -y (pip freeze)

解决方案 12:

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

pip freeze > requirements.txt

然后删除所有

pip uninstall -y -r requirements.txt 

解决方案 13:

最快的方法是完全重建虚拟环境。我假设你有一个与生产环境相匹配的 requirements.txt 文件,如果没有:

# On production:
pip freeze > reqs.txt

# On your machine:
rm $VIRTUALENV_DIRECTORY
mkdir $VIRTUALENV_DIRECTORY
pip install -r reqs.txt

解决方案 14:

使用virtualenvwrapper函数:

wipeenv

请参阅wipeenv 文档

解决方案 15:

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

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

-r, --需求文件

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

来自pip 文档版本 8.1

解决方案 16:

pip uninstall `pip freeze --user`

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

解决方案 17:

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

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

pip freeze --exclude-editable | xargs -r pip uninstall -y

man xargs

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

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

解决方案 18:

pip3 freeze --local | xargs pip3 uninstall -y

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

解决方案 19:

对于我来说,这是卸载所有 Python 包的最简单的方法。

from pip import get_installed_distributions
from os import system
for i in get_installed_distributions():
    system("pip3 uninstall {} -y -q".format(i.key))

解决方案 20:

这在我的 Windows 系统上运行良好

pip freeze > packages.txt && pip uninstall -y -r packages.txt && del packages.txt

第一部分pip freeze > packages.txt创建一个文本文件,其中包含使用 pip 安装的软件包列表以及版本号

第二部分pip uninstall -y -r packages.txt删除所有已安装的软件包,而不要求确认提示。

第三部分del packages.txt删除刚刚创建的packages.txt。

解决方案 21:

仅使用以下方式即可实现跨平台支持pip

#!/usr/bin/env python

from sys import stderr
from pip.commands.uninstall import UninstallCommand
from pip import get_installed_distributions

pip_uninstall = UninstallCommand()
options, args = pip_uninstall.parse_args([
    package.project_name
    for package in
    get_installed_distributions()
    if not package.location.endswith('dist-packages')
])

options.yes = True  # Don't confirm before uninstall
# set `options.require_venv` to True for virtualenv restriction

try:
    print pip_uninstall.run(options, args)
except OSError as e:
    if e.errno != 13:
        raise e
    print >> stderr, "You lack permissions to uninstall this package.
                      Perhaps run with sudo? Exiting."
    exit(13)
# Plenty of other exceptions can be thrown, e.g.: `InstallationError`
# handle them if you want to.

解决方案 22:

为什么不重新rm -r .venv开始呢?

解决方案 23:

在 Windows 上,如果您的路径配置正确,则可以使用:

pip freeze > unins && pip uninstall -y -r unins && del unins

解决方案 24:

跨平台且在 pipenv 中工作的简单而强大的方法是:

pip freeze 
pip uninstall -r requirement

通过 pipenv:

pipenv run pip freeze 
pipenv run pip uninstall -r requirement

但不会更新 piplock 或 pipfile,因此请注意

解决方案 25:

对于 Windows,使用命令提示符,删除虚拟环境中所有已安装的软件包(环境激活后):

for /f %i in ('pip freeze --local') do pip uninstall -y %i

解决方案 26:

如果你正在运行virtualenv

virtualenv --clear </path/to/your/virtualenv>

例如,如果你的虚拟环境是/Users/you/.virtualenvs/projectx,那么你可以运行:

virtualenv --clear /Users/you/.virtualenvs/projectx

如果你不知道虚拟环境位于何处,你可以which python在激活的虚拟环境中运行以获取路径

解决方案 27:

在Windows 的命令 Shellpip freeze | xargs pip uninstall -y中,该命令不起作用。因此,对于使用 Windows 的用户,我找到了另一种方法。

  1. 将命令中所有已安装的pip包的名称复制pip freeze.txt文件中。

  2. 然后,转到.txt文件的位置并运行命令pip uninstall -r *textfile.txt*

解决方案 28:

如果您正在使用pew,则可以使用wipeenv命令:

pew wipeenv [env]

解决方案 29:

我只是想删除项目安装的软件包,而不是我安装的其他软件包(例如neovimmypy和,pudb 我用于本地开发但不包含在应用程序要求中)。所以我做了:

cat requirements.txt| sed 's/=.*//g' | xargs pip uninstall -y

这对我来说很有效。

解决方案 30:

选择要从此文件夹中删除的库:

C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   984  
  在项目管理领域,CDCP(Certified Data Center Professional)认证评审是一个至关重要的环节,它不仅验证了项目团队的专业能力,还直接关系到项目的成功与否。在这一评审过程中,沟通技巧的运用至关重要。有效的沟通不仅能够确保信息的准确传递,还能增强团队协作,提升评审效率。本文将深入探讨CDCP...
华为IPD流程   0  
  IPD(Integrated Product Development,集成产品开发)是一种以客户需求为核心、跨部门协同的产品开发模式,旨在通过高效的资源整合和流程优化,提升产品开发的成功率和市场竞争力。在IPD培训课程中,掌握关键成功因素是确保团队能够有效实施这一模式的核心。以下将从五个关键成功因素展开讨论,帮助企业和...
IPD项目流程图   0  
  华为IPD(Integrated Product Development,集成产品开发)流程是华为公司在其全球化进程中逐步构建和完善的一套高效产品开发管理体系。这一流程不仅帮助华为在技术创新和产品交付上实现了质的飞跃,还为其在全球市场中赢得了显著的竞争优势。IPD的核心在于通过跨部门协作、阶段性评审和市场需求驱动,确保...
华为IPD   0  
  华为作为全球领先的通信技术解决方案提供商,其成功的背后离不开一套成熟的管理体系——集成产品开发(IPD)。IPD不仅是一种产品开发流程,更是一种系统化的管理思想,它通过跨职能团队的协作、阶段评审机制和市场需求驱动的开发模式,帮助华为在全球市场中脱颖而出。从最初的国内市场到如今的全球化布局,华为的IPD体系在多个领域展现...
IPD管理流程   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用