绕过pip卸载时的确认提示

12 浏览
0 Comments

绕过pip卸载时的确认提示

我试图在我的超级用户环境中卸载所有django包,以确保所有的webapp依赖项都安装在我的虚拟环境中。

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

但是pip希望确认每个包的卸载,而pip似乎没有-y选项。有没有更好的方法批量卸载Python模块?rm -rf .../site-packages/是否是正确的方法?是否有easy_install的替代方法?

另外,是否将pip强制安装所有依赖项到虚拟环境中,而不是依赖于系统Python模块来满足这些依赖关系,例如pip --upgrade install,但是强制安装甚至是相同的旧版本来覆盖任何系统模块。我尝试激活我的虚拟环境,然后pip install --upgrade -r requirements.txt,这似乎确实安装了依赖项,即使存在于我的系统路径中,但我不能确定这是因为我的系统模块旧了。而man pip似乎并不能保证这种行为(即安装已存在于系统site-packages中的相同版本的包)。

0
0 Comments

问题出现的原因是pip升级到7.1.2版本后,卸载软件包时会出现确认提示,需要手动确认是否要卸载。下面是解决方法:

pip版本在7.1.2及以上的可以通过以下命令绕过确认提示直接卸载软件包:

pip uninstall -y <python package(s)>

如果要卸载多个软件包,可以使用以下命令:

pip uninstall -y package1 package2 package3

如果要从文件卸载软件包,可以使用以下命令:

pip uninstall -y -r requirements.txt

0
0 Comments

问题原因:Pip在1.3.1版本中没有包含--yes选项。

解决方法:通过管道将yes命令传递给Pip。

具体操作如下:

$ sudo ls  # 输入密码以免再次提示
$ /usr/bin/yes | sudo pip uninstall pymongo

这个方法非常简单,感谢Unix程序的提醒,yes命令非常有用。

但是,我认为下面的方法可能不起作用(我今天对我的系统不太敢尝试):

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

因为yes命令会被pip freeze命令吃掉,而不是作为xargs参数/命令的一部分,即pip uninstall。

如果想一次性卸载所有依赖,可以使用以下命令:

pip freeze > all_to_uninstall.txt
yes | pip uninstall -r all_to_uninstall.txt

(对于上面提到的问题,可以参考这个链接:[bash - How can I pipe yes to a program started by xargs? - Stack Overflow](https://stackoverflow.com/questions/57223133))

0
0 Comments

问题的出现原因是在执行pip uninstall命令时,会出现一个确认提示,需要用户手动确认是否卸载。这可能会导致在批量卸载多个包时变得繁琐。

为了解决这个问题,可以使用以下方法来绕过确认提示:

pip uninstall -y -r requirements.txt

通过在pip uninstall命令中添加-y选项,可以自动回答确认提示,从而绕过手动确认。在执行上述命令时,requirements.txt中列出的所有包将被自动卸载,而无需用户干预。

这样,我们可以快速、简便地卸载requirements.txt中的所有包,提高操作效率。

0