HOWTO · Python

如何檢查 Python 模組版本

了解如何使用 importlib.metadata、模組的 __version__ 屬性、pip show 或 pkg_resources 檢查已安裝的 Python 套件的版本。

本頁內容

要從 Python 中檢查已安裝套件的版本,請使用套件的發行名稱呼叫 importlib.metadata.version()。要在終端機中檢查,請使用您要查看其環境的 Python 直譯器執行 python -m pip show PACKAGE。匯入名稱和發行名稱可能不同,因此請使用套件的安裝說明或套件中繼資料中列出的名稱。

使用 importlib.metadata 取得已安裝發行版的版本

importlib.metadata 讀取已安裝發行版的中繼資料。傳入一個發行名稱,例如 requests;您在 import 陳述式中寫的名稱並不總是相同。此範例會印出目前環境傳回的第一個發行版的名稱和版本:

from importlib import metadata

distributions = list(metadata.distributions())
if distributions:
    distribution = distributions[0]
    print(f"{distribution.metadata['Name']}: {distribution.version}")
else:
    print("No installed distributions found.")
pip: 26.2.1

對於一個已知的套件,呼叫 metadata.version("requests")。如果標準函式庫的 importlib.metadata 模組在該 Python 環境中無法使用,單獨安裝的 backport 會使用匯入路徑 importlib_metadata;其查詢 API 也名為 version()。是否可用取決於環境,因此本文不假定某個特定的 Python 版本門檻。

查詢失敗可能意味著該發行版未安裝在目前使用中的環境中、名稱錯誤,或者該命令使用的 Python 環境與安裝該套件的環境不同。在得出結論之前,請檢查發行名稱和直譯器。

在可用時檢查模組的 __version__ 屬性

某些模組會將其版本公開為 __version__ 字串。例如,在匯入提供該屬性的模組後,使用 print(module.__version__) 讀取它。當該屬性存在時,這是一種方便的檢查方法,但它並不是 Python 模組的普遍要求的一部分。當您需要依名稱取得已安裝發行版的中繼資料時,上述標準函式庫中繼資料查詢更合適。

使用 pip show 檢查套件

在終端機中使用 python -m pip show PACKAGE 顯示一個已安裝發行版的詳細資訊。此命令範例在此處未執行。例如,執行 python -m pip show requests。在結果中找到 Version 行。將 pip 作為所選 Python 的模組執行,有助於使該命令與該直譯器的環境保持一致;單獨的 pip 命令可能指向不同的安裝。pip show 報告套件中繼資料,不會安裝或更新該套件。

在舊環境中使用 pkg_resources

在使用 pkg_resources 的環境中,請在呼叫 get_distribution() 之前匯入它。傳入一個發行名稱,它可能與模組的匯入名稱不同。這個獨立範例在 pkg_resources 可用時檢查已安裝的 pip 發行版;該 API 在某些環境中可能不存在:

try:
    import pkg_resources
except ImportError:
    print("pkg_resources is unavailable in this environment.")
else:
    try:
        print(pkg_resources.get_distribution("pip").version)
    except pkg_resources.DistributionNotFound:
        print("pip is not installed in this environment.")

這是一個舊的替代方案;對於新程式碼,在可用時優先使用 importlib.metadata。