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。