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

如何在Python Typer程序中获取pyproject.toml指定的version版本号?

从pyproject.toml引入版本号到Python/Typer程序(Poetry构建)

这里有几种简便的实现方式:

方法1:直接读取pyproject.toml文件

这是最通用的方式,适配开发和生产环境。Python 3.11+自带tomllib模块,3.10及以下版本可通过pip install tomli安装兼容模块。

在你的包的__init__.py(比如cat_cli/__init__.py)中添加以下代码:

# 适配Python版本
try:
    import tomllib
except ImportError:
    import tomli as tomllib

def _get_version():
    with open("pyproject.toml", "rb") as f:
        config = tomllib.load(f)
    return config["tool"]["poetry"]["version"]

__version__ = _get_version()

之后在Typer命令中就可以直接引用这个版本变量:

import typer
from cat_cli import __version__

app = typer.Typer()

@app.command()
def version():
    typer.echo(f"cat-cli v{__version__}")

方法2:读取Poetry自动设置的环境变量

当你用poetry run或poetry shell启动程序时,Poetry会自动设置POETRY_PROJECT_VERSION环境变量,直接读取即可:

import os

__version__ = os.getenv("POETRY_PROJECT_VERSION", "unknown")

这种方式无需读取文件,但只有通过Poetry的命令启动程序时才能获取到正确版本,适合生产环境用Poetry部署的场景。

内容的提问来源于stack exchange,提问作者Arkady Sharkansky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:55:23