使用pyproject.toml时如何只在一个地方指定版本?

How to specify version in only one place when using pyproject.toml?

我的包版本定义在两个地方:

每当遇到烦人且不干的版本时,我都必须更新两者。有没有办法让 Python 从 TOML 读取版本,或者让 TOML 从 Python 读取版本?

安装项目后 - 通过 poetry install 或从控制轮进入可编辑模式 - 您可以通过 importlib.metadata 访问多个元数据(importlib_metadata for python < 3.8).

所以仅在 pyproject.toml 中保留版本并在您的 python 代码中使用它:

import importlib.metadata

__version__ = importlib.metadata.version("mypackage")

这段代码对我有用:

import importlib.metadata

__version__ = importlib_metadata.version(__package__ or __name__)

但是,这仅适用于已使用 pip 或 poetry 安装包的情况。