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

众所周知,升级某个库(假设为 xxx),可以用pip install --upgrade xxx 命令,或者简写成pip install -U xxx 。

如果有多个库,可以依次写在 xxx 后面,以空格间隔。那么,如何简单优雅地批量更新系统中全部已安装的库呢?

接下来我们直奔主题,带大家学习几种方法/骚操作吧!

方法一: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 pip
from subprocess import call

packages = [dist.project_name for dist in pip.get_installed_distributions()]
call("pip install --upgrade " + ' '.join(packages), shell=True)

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

# 较新的 pip 版本。但不建议使用
from subprocess import call
from pip._internal.utils.misc import get_installed_distributions

for dist in get_installed_distributions():
  call("pip install --upgrade " + dist.project_name, shell=True)

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

方法四:使用 pkg_resources 库

跟方法二和方法三相似的还有一种方法。

pkg_resources 是 setuptools 库的一部分,用于查找和管理 Python 库、版本依赖关系、相关联的资源文件等。可以这样写:

# 需要安装 setuptools
import pkg_resources
from subprocess import call

packages = [dist.project_name for dist in pkg_resources.working_set]
call("pip install --upgrade " + ' '.join(packages), shell=True)

方法五:使用 pip-review 库

pip-review 库是一个专门用来方便升级 Python 库的工具,可以查看已过期的库、自动升级或者交互式选择性地升级:

还有一个类似的pip-upgrader 库,也是为了解决批量升级的问题,感兴趣的同学请自行搜索。

方法六:pip 计划的全量升级命令

pip 官方有计划要提供一个全量升级的(upgrade-all)命令,如果开发出来了,那应该会是最佳选择。

然后,坏消息是这个计划被阻塞了近三年,目前 issue 仍处于 Open 状态,不知道何时能有进展。这里暂且一提吧,未来留意。

前面介绍了六种方法,各有其适用的场景,小伙伴们都学会了么?

除此之外,当然还有其它的方法,比如 stackoverflow 网站上有个“How to upgrade all Python packages with pip?”问题,其下就有比较多的回答。

到此这篇关于Python 如何批量更新已安装的库的文章就介绍到这了,更多相关Python批量更新已安装库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python3实现elasticsearch批量更新数据

    废话不多说,直接上代码! updateBody = { "query":{ "range":{ "write_date": { "gte": "2019-01-15 12:30:17", "lte": "now" } } }, "script": { "inline": "ctx._source.index = par

  • 利用Python如何批量更新服务器文件

    前言 买了个Linux服务器,Centos系统,装了个宝塔搭建了10个网站,比如有时候要在某个文件上加点代码,就要依次去10个文件改动,虽然宝塔是可视化页面操作,不需要用命令,但是也麻烦,虽然还有git的hook方法,但是操作也麻烦,新建个目录的话还得操作一次,所以萌生了一个想法,用Python来批量更新服务器上的文件 序言 在网上搜索了一圈,发现Python有个库叫paramiko可以专门拿来干这个事,具体资料和安装就网上去搜索吧,我就直接上代码了,不到100行,其实还可以精简吧,后面再说了,

  • python获取文件后缀名及批量更新目录下文件后缀名的方法

    本文实例讲述了python获取文件后缀名及批量更新目录下文件后缀名的方法.分享给大家供大家参考.具体实现方法如下: 1. 获取文件后缀名: 复制代码 代码如下: #!/usr/bin/python import os dict = {} for d, fd, fl in os.walk('/home/ahda/Program/'):         for f in fl:                 sufix = os.path.splitext(f)[1][1:]           

  • Python 如何批量更新已安装的库

    众所周知,升级某个库(假设为 xxx),可以用pip install --upgrade xxx 命令,或者简写成pip install -U xxx . 如果有多个库,可以依次写在 xxx 后面,以空格间隔.那么,如何简单优雅地批量更新系统中全部已安装的库呢? 接下来我们直奔主题,带大家学习几种方法/骚操作吧! 方法一:pip list 结合 Linux 命令 pip list 命令可以查询已安装的库,结合 Linux 的一些命令(cut.sed.awk.grep--),可以直接在命令行中实现

  • PyCharm中如何直接使用Anaconda已安装的库

    前言 实习生问:我咋看见你经常用Anaconda的jupyter notebook写python代码,为啥不用PyCharm呢? - 对于我个人而言现在主要的工作是数据分析,挖掘,直接下载Anaconda安装后,就可以启动jupyter notebook,写代码也感觉比较方便,尤其是PyCharm的启动和运行很笨重 但是之前用Django以及爬虫项目的时候,PyCharm优势就非常明显了 较为详细的解释 Jupyter notebook的特点: 开源. 支撑 30 种语言,包括一些数据科学领域很

  • Python3 全自动更新已安装的模块实现

    1. 手动操作 1.1. 显示模块 pip list 1.2. 显示过期模块 pip list --outdated 1.3. 安装模块 pip install xxx 1.4. 升级模块 pip install --upgrade xxx 2. 自动操作 手动敲命令升级有点儿麻烦(特别是需要更新的模块比较多时),而我们完全可以用代码简单地实现全自动升级. 代码可以至GitHub下载,也可以复制本文中的代码: autoUpgradePythonModules.py: import subproc

  • Python pip安装第三方库实现过程解析

    对于Python开发用户来讲,安装第三方库是家常便饭,下面提供两种安装方式 pycharm软件安装 1.打开file>setting 2.点击+号 查询第三方库名,点击安装即可 pip安装 打开dos窗口,输入pip install 第三方库名 即可 注意:由于国外的源下载速度有时候太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成功率. 国内源: 清华:https://pypi.tuna.tsinghua.edu.cn/si

  • PyCharm安装第三方库如Requests的图文教程

    PyCharm安装第三方库是十分方便的,无需pip或其他工具,平台就自带了这个功能而且操作十分简便.如下: [注]:本人PyCharm已汉化,若是英文版按括号中英文指示操作即可. 1. 打开软件,点击左上角"文件(File)"->"设置(setting)": 2. 选择弹出界面左上角的"项目(Project): PyCharm_Demo"->"project Interpreter": 3. 点击右上方"

  • Python3自动安装第三方库,跟pip说再见

    目录 1.引言 2.pip手动安装 2.1 在线安装 2.1.1 默认安装 2.1.2 指定版本安装 2.2 离线安装 2.3 设置国内源 2.4 卸载与升级 2.4.1 卸载 2.4.2 升级 3.pip.main自动安装 3.1 pip main 安装 3.2 os安装 4.总结 1.引言 续上一篇<一行代码,导入Python所有库> 不知道是不是都跟小鱼一样,把剩下的时间来学(撩)习(妹). 为了体现小鱼在懒上的造就,小鱼今天再分享一个骚操作: Python自动安装第三方库,彻底解放双手

  • 关于Pycharm安装第三方库超时 Read time-out的问题

    在Python 中使用pip指令安装第三方库出现超时,如下图: 找了几个命令都不是很好用,最后找到解决的步骤如下: 1.在电脑桌面使用win +R 指令打开运行框,输入cmd点确定按钮 2.进入pycharm中的Terminal复制当下路径(每个人的路径不一样,路径可变) 3.再次回到cmd命令面板,输入cd 复制的路径,最后按enter键 4.这个时候输入cd venv\Scripts,然后按enter键 5.此时输入最后的一步,输入指令 pip --default-timeout=100 i

  • 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.后者会带一个表头

  • Python编程实现双击更新所有已安装python模块的方法

    本文实例讲述了Python编程实现双击更新所有已安装python模块的方法.分享给大家供大家参考,具体如下: 首先声明我是一个升级控.几乎每天会查看一下手机.电脑是否有新的应用需要更新. 同样,我的python模块也是这样.百度了一下,发现目前还没有人将更新所有模块做成一件命令,但是查到了指引,主要就是两个命令. pip list --outdated pip install -U xxxx 当然,如果你只是安装了几个python模块,重复执行几次命令也是可以的,也不会太烦,也不会浪费时间. 有

随机推荐