在使用Python的过程中,经常会使用到一些第三方模块,而在使用了一段时间后,若开发者更新了新的版本后,我们就需使用命令更新,首先可以检查哪些模块有新版本:
pip3 list --outdate
如果有新版本的就会显示出来:
知道是那些可以更新后,就可以使用命令针对某个模块进行更新
pip3 install --upgrade (模块名)
C:\Users>pip3 install --upgrade attrs
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: attrs in d:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages (20.3.0)
Collecting attrs
Downloading attrs-21.4.0-py2.py3-none-any.whl (60 kB)
---------------------------------------- 60.6/60.6 KB 29.0 kB/s eta 0:00:00
Installing collected packages: attrs
Successfully installed attrs-21.4.0
那么这里只能一个一个的区更新,显得有点麻烦,我就自己写了个脚本,用来一次批量更新所有的模块。我只是个初学者,写的不好!可以指正。
# -*- coding: utf-8 -*-
import shlex
import subprocess
import sys
def subcmd(cmd):
retlist=[]
cmd = shlex.split(cmd) #linux or mac os 需要用到这个方法,再改下一句的参数
p = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while p.poll() is None:
line = p.stdout.readline()
line = line.strip()
if line:
s1 = str(line, encoding='utf-8')
print(s1)
retlist.append(s1)
return retlist
if __name__ == '__main__':
shell_cmd = 'pip3 list -o -i pip3 list -i https://pypi.tuna.tsinghua.edu.cn/simple/'
retlist = subcmd(shell_cmd)
liblist = []
if len(retlist) == 0 :
print('All libraries are up to date. Script is Exit!')
sys.exit(0)
#check pip3 updete
isExistUpdete = False
print(retlist[-2][:34])
exist_updete = retlist[-2][:34]
if len(retlist) >= 2:
if exist_updete == 'WARNING: You are using pip version':
print('exist update')
updatecmd = retlist[-1].split('\'')[1]
isExistUpdete = True
print(updatecmd)
subcmd(updatecmd)
Libh = 2
Libt = len(retlist)
if isExistUpdete :
Libt = Libt - 2
print(Libh,Libt)
for i in range(Libh,Libt):
s = retlist[i].split(' ')[0]
liblist.append(s)
print('List of libraries to update:\nCount: %d'%(len(liblist)))
for i in liblist:
print(i)
for i in liblist:
print('----------------------------------------------------------------')
print('Start updete: %s'%(i))
cmd = 'pip3 install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple/ ' + i
print(cmd)
subcmd(cmd)
sys.exit()
原理:
就是笨办法,先获取那些需要更新的脚本,再开个进程自己一个个的更新。
2022年12月22日更新:
新增 使用参数-i 指向国内源的方法解决下载慢的问题。此方法也试用与下载入下载numpy可以使用命令
pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/ 即可。速度上可提升好几十倍。