使用pyproject.toml时如何只在一个地方指定版本?
How to specify version in only one place when using pyproject.toml?
我的包版本定义在两个地方:
__version__ = 1.2.3
在 mypackage/__init__.py
version = "1.2.3"
in 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 安装包的情况。
我的包版本定义在两个地方:
__version__ = 1.2.3
在mypackage/__init__.py
version = "1.2.3"
inpyproject.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 安装包的情况。