Python如何使用pip批量更新库版本
1. 更新庫的命令
首先,我們要了解Python怎么更新庫版本.
這個大家都比較清楚,直接使用命令: pip install --upgrade xxx(要更新的庫名稱)
例如:經常要更新的numpy,打開命令行輸入:pip install --upgrade numpy,即可開始更新.
2.查看當前可更新的庫有哪些?
查看當前可更新庫,在命令行輸入:pip list -o 即可查詢當前Python環境可更新的庫有哪些.
3.能不能一鍵更新所有可更新的庫呢?
使用命令,將當前可更新的庫是查出來了,但是要一個接一個去pip install --upgrade xxx(要更新的庫名稱),那實在是太慢了啊.要是幾個月沒更新,庫又多,那可真遭罪了.
之前就是這個想法,上網查了一下,是有一個專門的pip相關的庫可以搞定.但是用起來發現好像有點問題,就放棄了.
既然寫了代碼,何不如代碼自動化更新呢?說干就干.
3.1 使用os模塊,代替命令行來的得到當前可更新的庫列表.
一開始,我也是抱著這個想法去的,實際操作發現.并不是這樣的.
os.system(‘pip list -o’) # 等價于命令行黑窗口的pip list -o
但是腳本里運行這條命令的時候,結果會直接打印出來,而不是作為返回值.
就是說,即使我做賦值操作:
up_list = os.system(‘pip list -o’)
這里即使不打印up_list.控制臺也會直接輸出結果.
然后我們打印up_list的類型和結果,發現up_list是int類型的,返回值是0.
3.2 獲取os命令的返回值.
上述方法拿不到返回值,就接著百度了一下,果然找到了方法.
使用os.popen()可以拿到命令返回值的對象.
再進一步,os.poen(‘pip list -o’).readlines() 就可以拿到返回值的文本信息了.
首行是描述,第二行是’—'分割線,所以再做一個切割即可.
完整代碼如下:
import os def pip_update():model_ls = os.popen('pip list -o').readlines() # 這樣才能拿到命令行的返回值.# 第一行是名稱,第二行是分割線up_list = [i.split()[0] for i in model_ls[2:-1]] # 庫信息的排布:'numpy 舊版本 新版本 xx' 按空格分割拿到包名就好print(f"可升級的庫有:{up_list}")for item in up_list:if not item.startswith("\\x") and item != 'pip': # 抓到一個異常數據: '\x1b[0m' . 自動更新pip容易出問題.try:print('-' * 50, f'開始升級庫:{item}', sep='\n')os.system(f"pip install --upgrade {item}")except:print(f"升級錯誤:{item}")if __name__ == '__main__':pip_update()總結
以上是生活随笔為你收集整理的Python如何使用pip批量更新库版本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【解决方法】如何压缩网页字体文件
- 下一篇: Python--Redis实战:第五章: