You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何独立于构建系统从Python包源码目录提取版本号?

无需构建发行版提取Python包版本号的方法

当然有,以下是几种独立于构建系统、不用生成发行包就能拿到版本号的实用方法:

  • 直接读取配置文件(适用于硬编码版本的包)
    如果包的版本号直接写在pyproject.toml里(比如project.version字段),可以用Python自带的tomllib(3.11+)或第三方库tomli(低版本Python)读取:

    # Python 3.11+
    import tomllib
    with open("pyproject.toml", "rb") as f:
        config = tomllib.load(f)
    print(config["project"]["version"])
    

    要是包还在用旧版的setup.py硬写版本,也可以直接解析这个文件,但这种方式兼容性差,因为很多现代包已经不再硬编码版本了。

  • 利用PEP 517构建工具的元数据提取能力
    你提到的build工具内部就是通过PEP 517规范提取元数据的,我们可以直接调用它的API来获取版本,不用实际构建发行版:
    先确保安装了build:

    pip install build
    

    然后在包源码目录执行:

    from build import ProjectBuilder
    from pathlib import Path
    
    builder = ProjectBuilder(Path("."))
    print(builder.metadata["Version"])
    

    这个方法最通用,不管包用的是setuptools、poetry还是其他PEP 517兼容的构建后端,都能正确拿到版本号。

  • 针对使用setuptools-scm的包
    很多包用setuptools-scm从Git标签自动生成版本,这种情况下可以直接调用setuptools-scm的API获取:
    先安装setuptools-scm:

    pip install setuptools-scm
    

    然后执行:

    from setuptools_scm import get_version
    print(get_version())
    

内容的提问来源于stack exchange,提问作者Mike T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:16:07