當前位置:成語大全網 - 新華字典 - 如何批量更新已安裝的庫?

如何批量更新已安裝的庫?

方法壹: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 pipfrom subprocess import callpackages = [dist.project_name for dist in pip.get_installed_distributions()]call("pip install --upgrade " + ' '.join(packages), shell=True)

在較新版本中,此方法已被廢棄,同樣的功能要這樣寫:

# 較新的 pip 版本。但不建議使用from subprocess import callfrom pip._internal.utils.misc import get_installed_distributionsfor dist in get_installed_distributions(): call("pip install --upgrade " + dist.project_name, shell=True)

但是,?_internal?帶前綴下劃線,表明它並不希望被導出使用。

關於如何批量更新已安裝的庫,青藤小編就和您分享到這裏了。如果您對python編程有濃厚的興趣,希望這篇文章可以為您提供幫助。如果您還想了解更多關於python編程的技巧及素材等內容,可以點擊本站的其他文章進行學習。