绕过pip卸载的确认提示

173 投票
7 回答
139479 浏览
提问于 2025-04-16 12:58

我想在我的超级用户环境中卸载所有的django包,这样可以确保我的网页应用所需的所有依赖都安装在我的虚拟环境里。

sudo su
sudo pip freeze | grep -E '^django-' | xargs pip -q uninstall

但是,pip每卸载一个包都要确认一下,而且好像没有一个 -y 的选项可以直接跳过确认。有没有更好的方法可以一次性卸载一堆python模块?直接用 rm -rf .../site-packages/ 这样做合适吗?有没有简单的替代方法?

另外,是不是更好强制pip把所有依赖安装到虚拟环境里,而不是依赖系统的python模块来满足这些依赖,比如用 pip --upgrade install,但是强制安装即使是同样旧的版本来覆盖任何系统模块。我试着激活我的虚拟环境,然后用 pip install --upgrade -r requirements.txt,这似乎确实安装了依赖,包括那些在我的系统路径中的包,但我不确定这是否是因为我的系统模块比较旧。而且 man pip 似乎也没有保证这种行为(也就是说,安装一个在系统的site-packages中已经存在的相同版本的包)。

7 个回答

9

如果你想要卸载requirements.txt文件中的所有软件包,

pip uninstall -y -r requirements.txt
72

Pip 这个工具在 1.3.1 版本的时候,并没有提供一个叫做 --yes 的选项。

解决办法:可以用一个叫做 yes 的命令来处理这个问题!

$ sudo ls  # enter pw so not prompted again
$ /usr/bin/yes | sudo pip uninstall pymongo
360

从pip版本7.1.2开始,你可以使用命令 pip uninstall -y <python package(s)> 来卸载Python包。

pip uninstall -y package1 package2 package3

或者你也可以从文件中卸载。

pip uninstall -y -r requirements.txt

撰写回答