120

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

4

7 回答 7

253

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

pip uninstall -y package1 package2 package3

或从文件

pip uninstall -y -r requirements.txt
于 2015-11-05T23:51:40.777 回答
68

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

解决方法:管道是的!

$ sudo ls  # enter pw so not prompted again
$ /usr/bin/yes | sudo pip uninstall pymongo
于 2013-05-24T23:56:46.540 回答
8

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

pip uninstall -y -r requirements.txt
于 2019-06-04T02:10:12.710 回答
1

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

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

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

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

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

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

于 2011-03-04T06:17:59.217 回答
1

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

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

pip --upgrade install

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

于 2011-03-05T04:41:35.537 回答
1

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

!yes | pip uninstall tensorflow
!yes | pip uninstall gast
!yes | pip uninstall tensorflow-probability
于 2021-03-16T09:12:51.760 回答
0
pip install -U xxxx 

可以绕过确认

于 2018-06-28T08:00:54.770 回答