使用pyproject.toml时如何仅在一处指定版本?
我的包版本在两个地方定义:
__version__ = 1.2.3在mypackage/__init__.pyversion = "1.2.3"在pyproject.toml(我正在使用诗歌)
每当我遇到烦人而不是 DRY 的版本时,我都必须更新两者。有没有办法让 Python 从 TOML 读取版本,或者让 TOML 从 Python 读取版本?
回答
安装项目后 - 无论是在可编辑模式下poetry install还是从轮子 - 您可以通过importlib.metadata(importlib_metadata对于python <3.8)访问多个元数据。
因此,仅保留版本pyproject.toml并在您的 python 代码中使用它:
import importlib.metadata
__version__ = importlib.metadata.version("mypackage")