美文网首页
【Python】自动更新Python所有第三方库

【Python】自动更新Python所有第三方库

作者: 火禾子_ | 来源:发表于2019-01-15 08:10 被阅读0次

    一般python用得比较久以后,就会安装很多第三方的库。可以通过pip list查看包的安装情况。

    通过pip list -o可以看到需要更新的第三方库。

    而pip提供的更新命令只能一个个的更新...

    pip install -U 库名  # 注意U必须大写
    

    有更新强迫症的同学是不是想砸电脑!

    于是还是写个脚本来一次性全部更新。
    要一次性更新,那么来个笨办法,用 Python 执行 CMD 命令吧...
    用 Python 执行 CMD 命令比较常用的就是 subprocess 库,用来执行子进程。

    脚本思路:
    先执行 pip list -o 命令获取所有的更新列表;
    然后从更新列表中取出需要更新的第三方库名;
    循环执行 pip install -U 库名。

    
    # pip显示需要更新的python列表
    com_list_o = 'pip list -o' 
    # 执行命令并返回结果
    p = subprocess.Popen(com_list_o, shell=True, stdout=subprocess.PIPE)
    # 取命令返回结果,结果是一个二进制字符串,包含了我们上面执行pip list -o后展现的所有内容
    out = p.communicate()[0]
    # 二进制转utf-8字符串
    out = str(out, 'utf-8')
    
    # 切出待升级的包名, 并存入列表
    need_update = []
    for i in out.splitlines()[2:]:
        need_update.append(i.split(' ')[0])
    
    # 执行升级命令,每次取一个包进行升级,pip只支持一个包一个包的升级
    for nu in need_update:
        com_update = 'pip install -U {py}'.format(py=nu)
        print("执行命令:", com_update)
        subprocess.call(com_update)
        print("----------{com} 执行结束-----------\n".format(com=com_update))
    
    
    print("检查更新情况:")
    subprocess.call(com_list_o)
    

    由于我的 Python2 和 Python3 都有,环境变量加的是 Python2,因此 Python3 的 pip 命令在执行的时候要写成py -3 -m pip list -opy -3 -m pip install -U 库名

    脚本执行时间会严重受网络情况影响,不过好歹实现了一次更新所有第三方库。

    作者:懒猫Nemo
    链接:https://www.jianshu.com/p/86bf0f9a6f1a

    相关文章

      网友评论

          本文标题:【Python】自动更新Python所有第三方库

          本文链接:https://www.haomeiwen.com/subject/jwhedqtx.html