
python之所以這么火,是因?yàn)?a href='/map/python/' style='color:#000;font-size:inherit;'>python有許多功能強(qiáng)大的庫(kù),能幫助我們完成數(shù)據(jù)采集、數(shù)據(jù)挖掘、數(shù)據(jù)清洗、數(shù)據(jù)可視化等一系列操作。許多python庫(kù)安裝之后,為了保證使用效果,需要進(jìn)行更新升級(jí),由于安裝的python庫(kù)比較多,一個(gè)一個(gè)更起來(lái)比較費(fèi)時(shí)、費(fèi)力,今天小編為大家?guī)?lái)了可以批量更新python庫(kù)的方法,希望對(duì)大家有所幫助。
文章來(lái)源: Python貓
作者:豌豆花下貓
眾所周知,升級(jí)某個(gè)庫(kù)(假設(shè)為 xxx),可以用pip install --upgrade xxx 命令,或者簡(jiǎn)寫(xiě)成pip install -U xxx 。
如果有多個(gè)庫(kù),可以依次寫(xiě)在 xxx 后面,以空格間隔。那么,如何簡(jiǎn)單優(yōu)雅地批量更新系統(tǒng)中全部已安裝的庫(kù)呢?
接下來(lái)我們直奔主題,帶大家學(xué)習(xí)幾種方法/騷操作吧!
pip list 命令可以查詢(xún)已安裝的庫(kù),結(jié)合 Linux 的一些命令(cut、sed、awk、grep……),可以直接在命令行中實(shí)現(xiàn)批量升級(jí)。
先查詢(xún)一下,看看是什么格式的:
可以看到,前兩行是一些提示信息,我們需要從第 3 行開(kāi)始過(guò)濾,那就可以使用awk命令:
python3 -m pip list | awk 'NR>=3{print}' | awk '{print $1}' | xargs python3 -m pip install -U
解釋一下這句命令的操作過(guò)程:先 list 查詢(xún),接著第一個(gè) awk 取出行號(hào)大于等于 3 的內(nèi)容,第二個(gè) awk 取出第一列的內(nèi)容,然后作為參數(shù)傳給最后的升級(jí)命令。
(PS:測(cè)試服務(wù)器上有不同版本的 Python,所以作了指定。關(guān)于“-m”的用法,推薦閱讀:Python 中 -m 的典型用法、原理解析與發(fā)展演變)
pip 還支持查詢(xún)已過(guò)期的庫(kù),即使用pip list --outdated 命令。默認(rèn)情況下,查詢(xún)出的格式跟pip list 相似,有效內(nèi)容從第三行開(kāi)始,大家可以試試。
另外,我們還可以指定--format=freeze 格式,效果是這樣的:
這樣的格式,可以用 cut 命令切割“=”號(hào),然后取第一列:
pip list --outdated --format=freeze | cut -d = -f 1 | xargs pip install -U
以上命令在 Windows 系統(tǒng)中用不了。有沒(méi)有更為通用的方法呢?
如果是全量升級(jí)已安裝的庫(kù),可以先用pip freeze 命令生成依賴(lài)文件,獲取到已安裝的庫(kù)及其當(dāng)前版本號(hào):
pip freeze > requirements.txt
然后修改文件中的“==”為“>=”,接著執(zhí)行:
pip install -r requirements.txt --upgrade
此方法比較適合于帶有依賴(lài)文件的具體項(xiàng)目,可以針對(duì)該項(xiàng)目來(lái)升級(jí)所需的庫(kù)。
早期的 pip 庫(kù)(<10.0.1)提供了 get_installed_distributions() 方法查詢(xún)已安裝的庫(kù),可以在代碼中使用:
# 只在早期 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)
在較新版本中,此方法已被廢棄,同樣的功能要這樣寫(xiě):
# 較新的 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”帶前綴下劃線,表明它并不希望被導(dǎo)出使用。
跟方法二和三相似的還有一種方法。
pkg_resources 是 setuptools 庫(kù)的一部分,用于查找和管理 Python 庫(kù)、版本依賴(lài)關(guān)系、相關(guān)聯(lián)的資源文件等。可以這樣寫(xiě):
# 需要安裝 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 庫(kù)是一個(gè)專(zhuān)門(mén)用來(lái)方便升級(jí) Python 庫(kù)的工具,可以查看已過(guò)期的庫(kù)、自動(dòng)升級(jí)或者交互式選擇性地升級(jí):
還有一個(gè)類(lèi)似的pip-upgrader 庫(kù),也是為了解決批量升級(jí)的問(wèn)題,感興趣的同學(xué)請(qǐng)自行搜索。
pip 官方有計(jì)劃要提供一個(gè)全量升級(jí)的(upgrade-all)命令,如果開(kāi)發(fā)出來(lái)了,那應(yīng)該會(huì)是最佳選擇。
然后,壞消息是這個(gè)計(jì)劃被阻塞了近三年,目前 issue 仍處于 Open 狀態(tài),不知道何時(shí)能有進(jìn)展。這里暫且一提吧,未來(lái)留意。
前面介紹了六種方法,各有其適用的場(chǎng)景,小伙伴們都學(xué)會(huì)了么?
除此之外,當(dāng)然還有其它的方法,比如 stackoverflow 網(wǎng)站上有個(gè)“How to upgrade all Python packages with pip?”問(wèn)題,其下就有比較多的回答。
數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無(wú)論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢(xún)效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開(kāi)的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開(kāi)始提取前,需先判斷 TIF 文件的類(lèi)型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專(zhuān)業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專(zhuān)業(yè)操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開(kāi)發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問(wèn)題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問(wèn)題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問(wèn)題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過(guò)程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶(hù)體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷(xiāo)案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見(jiàn)頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷(xiāo)成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類(lèi)分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類(lèi)分析作為 “無(wú)監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10