绕过pip卸载的确认提示

问题描述 投票:0回答:7

我正在尝试卸载超级用户环境中的所有 django 软件包,以确保我的所有 webapp 依赖项都安装到我的 virtualenv 中。

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

但是pip想要确认每个包卸载,并且pip似乎没有

-y
选项。有没有更好的方法来卸载一批python模块?
rm -rf .../site-packages/
是正确的方法吗?有 Easy_install 替代方案吗?

或者,强制 pip 将所有依赖项安装到 virtualenv 会比依赖系统 python 模块来满足这些依赖项更好,例如

pip --upgrade install
,但甚至强制安装同样旧的版本以覆盖任何系统模块。我尝试激活我的 virtualenv,然后
pip install --upgrade -r requirements.txt
,这似乎安装了依赖项,甚至是我的系统路径中存在的依赖项,但我无法确定这是否是因为我的系统模块很旧。并且
man pip
似乎并不能保证这种行为(即安装系统站点包中已存在的包的 same 版本)。

python django module pip easy-install
7个回答
354
投票

从 pip 版本 7.1.2 开始,您可以运行

pip uninstall -y <python package(s)>

pip uninstall -y package1 package2 package3

或从文件

pip uninstall -y -r requirements.txt

72
投票

Pip 不包含 --yes 选项(从 pip 版本 1.3.1 开始)。

解决方法:通过管道输入 yes!

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

9
投票

如果您想卸载

requirements.txt
中的每个软件包,

pip uninstall -y -r requirements.txt

4
投票

www.saturncloud.io 上,Jupiter 笔记本可以这样使用:

!yes | pip uninstall tensorflow
!yes | pip uninstall gast
!yes | pip uninstall tensorflow-probability

1
投票

或者,强制 pip 将所有依赖项安装到 virtualenv,而不是依赖系统 python 模块来满足这些依赖项会更好吗?

是的。不要过多地乱用内置的系统安装包。许多系统软件包,特别是 OS X 中的软件包(甚至是 debian 及其派生版本)都过于依赖它们。

pip --upgrade install,但强制安装同样旧的版本以覆盖任何系统模块。

如果 venv 中安装了一些系统软件包中已经存在的软件包,特别是如果它们是不同的版本,那么这应该不是什么大问题。这就是 virtualenv 的全部意义。

我尝试激活我的 virtualenv,然后 pip install --upgrade -r requests.txt ,这似乎安装了依赖项,甚至是我的系统路径中存在的依赖项,但我不确定这是否是因为我的系统模块很旧。而且 man pip 似乎并不能保证这种行为(即安装系统站点包中已存在的相同版本的包)。

不,它不会安装主安装中已有的软件包,除非您使用

--no-site-packages
标志来创建它,或者所需的版本和当前的版本不同..


0
投票
pip install -U xxxx 

可以绕过确认


0
投票

Lakshman Prasad 是对的,

pip --upgrade
和/或
virtualenv --no-site-packages
是正确的选择。卸载系统范围的 python 模块是不好的。

pip 的

--upgrade
选项确实会在虚拟环境中安装所需的模块,即使它们已经存在于系统环境中,即使所需版本或最新可用版本与系统版本相同。

pip install --upgrade

并且,在创建虚拟环境时使用 --no-site-packages 选项可确保系统路径中缺少模块的存在不会掩盖缺少的依赖项。这有助于暴露模块从一个包迁移到另一个包期间的问题,例如pinax.apps.groups -> django-groups,特别是当问题出在 django 中的 load templatetags 语句时,该语句在所有可用模块中搜索 templatetags 目录和其中的标记定义。

© www.soinside.com 2019 - 2024. All rights reserved.