问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何批量更新已安装的库?

发布网友 发布时间:2022-05-10 18:05

我来回答

2个回答

懂视网 时间:2022-05-10 22:27

下面小编就为的带来一篇python通过pip更新所有已安装的包实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

较新的pip已经支持list --outdated了,所以记录一下新的方法:

pip list --outdated --format=legacy |awk '{print $1}' |xargs sudo -H pip install -U
pip3 list --outdated --format=legacy |awk '{print $1}' |xargs sudo -H pip3 install -U

format有两个选项,一个是legacy,一个是columns。后者会带一个表头:

Package Version Latest Type
-------------- ------- ------ -----

因此选择用legacy的格式,用awk取第一列就好了。

另外,网上很多方法都是在root下操作或者直接sudo不带-H的,这会在一些机器上出现问题。推荐用sudo -H,具体效果请自行查看man手册。

热心网友 时间:2022-05-10 19:35

方法一:pip list 结合 Linux 命令


pip list 命令可以查询已安装的库,结合 Linux 的一些命令(cut、sed、awk、grep……),可以直接在命令行中实现批量升级。


先查询一下,看看是什么格式的:


可以看到,前两行是一些提示信息,我们需要从第 3 行开始过滤,那就可以使用awk命令:


python3 -m pip list | awk 'NR>=3{print}' | awk '{print $1}' | xargs python3 -m pip install -U


解释一下这句命令的操作过程:先 list 查询,接着第一个 awk 取出大于等于 3 的内容,第二个 awk 取出第一列的内容,然后作为参数传给最后的升级命令。


(PS:测试服务器上有不同版本的 Python,所以作了指定。关于“-m”的用法,推荐阅读:Python 中 -m 的典型用法、原理解析与发展演变)


pip 还支持查询已过期的库,即使用pip list --outdated 命令。默认情况下,查询出的格式跟pip list 相似,有效内容从第三行开始,大家可以试试。


另外,我们还可以指定--format=freeze 格式,效果是这样的:


这样的格式,可以用 cut 命令切割“=”号,然后取第一列:


pip list --outdated --format=freeze | cut -d = -f 1 | xargs pip install -U


以上命令在 Windows 系统中用不了。有没有更为通用的方法呢?


方法二:使用 pip freeze


如果是全量升级已安装的库,可以先用pip freeze 命令生成依赖文件,获取到已安装的库及其当前版本号:


pip freeze > requirements.txt


然后修改文件中的“==”为“>=”,接着执行:


pip install -r requirements.txt --upgrade


此方法比较适合于带有依赖文件的具体项目,可以针对该项目来升级所需的库。


方法三:代码中调用 pip 的方法


早期的 pip 库(<10.0.1)提供了 get_installed_distributions() 方法查询已安装的库,可以在代码中使用:


# 只在早期 pip 版本中用import pipfrom subprocess import callpackages = [dist.project_name for dist in pip.get_installed_distributions()]call("pip install --upgrade " + ' '.join(packages), shell=True)


在较新版本中,此方法已被废弃,同样的功能要这样写:


# 较新的 pip 版本。但不建议使用from subprocess import callfrom pip._internal.utils.misc import get_installed_distributionsfor dist in get_installed_distributions(): call("pip install --upgrade " + dist.project_name, shell=True)


但是,“_internal”带前缀下划线,表明它并不希望被导出使用。


关于如何批量更新已安装的库,青藤小编就和您分享到这里了。如果您对python编程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于python编程的技巧及素材等内容,可以点击本站的其他文章进行学习。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 那拼多多上面显示在邀请四个人帮砍价可以再砍一刀是什么意思?_百度问一问 特警和武警有什么区别呢?? 特警能打过几个武警? 武警和特警哪个更厉害? 哪个版本的linux比win10顺畅,启动速度快 deepin linux怎么增加开机速度 八仙果网上买有15块1斤的也有60元1斤的质量上的区别在哪里呢? 高手过来看看,小弟想问一下,Windows、Mac OS、Linux这三个系统哪个占资源最少,开机最快? linux系统开机是不是要很久? 请你修改一下LINUX的启动速度 太阳能宝温丹和玻璃管露水咋办了 ...身份证最后一位数是x要怎么才能添加到常用联系人里边去?需要怎么输... 手机丢了,别人还在用如何定位找回? 机顶盒主要有哪些功能?谁能详细指点 江西上饶这边煤气罐2020年多少钱一个? 来分期总额度28000我用了29000还有额度为什么借不出来? 注册新加坡公司需要注意的事项? 鸡蛋壳上有黑点,黑点颜色比较浅,像发霉了似的。怎么回事,怎么去除这些黑点 我把他删除了无数次,但他一次次的追加。他说:有你我踏实,你是我心里的牵挂。这是真的爱吗? 删了一个男生好几次他每次都加回你,最后一次删他没加了,过了两年,你加他,他同意了 沃砍活动是不是只能邀请好友帮我砍价?可以帮我多砍几次么? 如何卸载手机wifi助手? UC浏览器当我连接wifi的时候总出来个提醒,怎么关闭掉? 手痒,刨了芋头 辞职还能领取失业金吗 国际贸易与对外贸易的异同 四面八方,打一数字迷 八方四面猜一数字? 四面八方回声打一个数字 带世字的成语有哪些 四面八方五灵柩打三个数字? 四面八方猜一下阿拉伯数字? 关于“世”的四字成语是什么? 四面八方齐来到打三个数字? 四面八方山腰舞打三个数字? 带世的四字词语 “世”字开头的成语有哪些? 世字打头的成语 世字开头的成语 求个世字开头的成语