如何删除 pip 安装的所有软件包?
- 2025-01-09 08:47:00
- admin 原创
- 10
问题描述:
如何从我当前激活的虚拟环境中卸载 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:
我通过执行以下操作来解决这个问题:
reqs.txt
创建使用当前安装的软件包列表调用的需求文件
pip freeze > reqs.txt
然后卸载所有软件包
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 的命令 Shell
pip freeze | xargs pip uninstall -y
中,该命令不起作用。因此,对于使用 Windows 的用户,我找到了另一种方法。
将命令中所有已安装的pip包的名称复制
pip freeze
到.txt文件中。然后,转到.txt文件的位置并运行命令
pip uninstall -r *textfile.txt*
解决方案 28:
如果您正在使用pew
,则可以使用wipeenv命令:
pew wipeenv [env]
解决方案 29:
我只是想删除项目安装的软件包,而不是我安装的其他软件包(例如neovim
,mypy
和,pudb
我用于本地开发但不包含在应用程序要求中)。所以我做了:
cat requirements.txt| sed 's/=.*//g' | xargs pip uninstall -y
这对我来说很有效。
解决方案 30:
选择要从此文件夹中删除的库:
C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件