热门标签:
Q:

Pip卸载的旁路确认提示

我试图卸载我的超级用户环境中的所有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似乎并不能保证这种行为(即安装系统site-packages中已经存在的软件包的相同的版本)。

原网址
A:

从pip版本7.1.2开始,您可以运行pip uninstall -y <python package(s)>

pip uninstall -y package1 package2 package3

或从文件

pip uninstall -y -r requirements.txt

所有回答

共 6 条

author avatar

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

解决方法:管道是它!

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

如果您想从requirements.txt卸载每个软件包,

pip uninstall -y -r requirements.txt
author avatar

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

是的. 不要把内置的系统安装的软件包弄得太乱. 许多系统包,特别是在OS X(甚至debian和派生的品种)依赖于他们太多。

pip--升级安装,但强制安装同样旧版本以复盖任何系统模块。

如果系统包中已经安装了一些venv中的软件包,特别是如果它们是不同版本的,那就没什么大不了的了。 这就是virtualenv的全部要点。

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

不,它不会安装主安装中已经存在的软件包,除非您使用--no-site-packages标志创建它,或者所需和当前版本不同。.

author avatar

Lakshman Prasad是对的,pip --upgrade和/或virtualenv --no-site-packages是要走的路。 卸载系统范围的python模块很糟糕。

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

pip --upgrade install

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

author avatar

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

!yes | pip uninstall tensorflow
!yes | pip uninstall gast
!yes | pip uninstall tensorflow-probability
author avatar
pip install -U xxxx 

可以绕过确认

相似问题