如何让 python 的程序版本只在 setup.cfg 运行和打包?
How to have the python program version only in setup.cfg for runtime and packaging?
我正在寻找一种方法来专门在 setup.cfg 中指定我的 python 程序版本(不是解释器)并在运行时在我的 python 程序中使用它 - 它似乎是仅使用 setup.cfg 并完全省略 setup.py 的现代方式,如此处记录:https://setuptools.pypa.io/en/latest/userguide/declarative_config.html
这个话题似乎涉及了多年的冗长讨论,没有明确的答案,如下所述:Standard way to embed version into Python package?
我想要实现的是我的 setup.cfg 具有版本号(以及所有其他相关包数据)并使该版本在运行时可供我的程序使用。
示例setup.cfg
[metadata]
name = my_app
version = 0.1.3
author = foo
...
然后在我的运行时访问该版本号:
2022-02-04T23:01:28.177 INFO root::============= Welcome to my_app version 0.1.3, PID: 52296 =============
我怎样才能做到这一点?
我能想到的两个选项 – 我会选择第一个。
1。使用 setup.cfg
的 attr:
支持从源中读取版本
setup.cfg
[metadata]
version = attr:my_app.__version__
my_app/init.py
# ...
__version__ = '0.1.3'
2。使用importlib.metadata
从安装元数据中读取版本
(Python 3.8 中的新增功能,具有旧版 Python 的向后移植)
from importlib.metadata import version
my_version = version('my_app')
我正在寻找一种方法来专门在 setup.cfg 中指定我的 python 程序版本(不是解释器)并在运行时在我的 python 程序中使用它 - 它似乎是仅使用 setup.cfg 并完全省略 setup.py 的现代方式,如此处记录:https://setuptools.pypa.io/en/latest/userguide/declarative_config.html
这个话题似乎涉及了多年的冗长讨论,没有明确的答案,如下所述:Standard way to embed version into Python package?
我想要实现的是我的 setup.cfg 具有版本号(以及所有其他相关包数据)并使该版本在运行时可供我的程序使用。
示例setup.cfg
[metadata]
name = my_app
version = 0.1.3
author = foo
...
然后在我的运行时访问该版本号:
2022-02-04T23:01:28.177 INFO root::============= Welcome to my_app version 0.1.3, PID: 52296 =============
我怎样才能做到这一点?
我能想到的两个选项 – 我会选择第一个。
1。使用 setup.cfg
的 attr:
支持从源中读取版本
setup.cfg
[metadata]
version = attr:my_app.__version__
my_app/init.py
# ...
__version__ = '0.1.3'
2。使用importlib.metadata
从安装元数据中读取版本
(Python 3.8 中的新增功能,具有旧版 Python 的向后移植)
from importlib.metadata import version
my_version = version('my_app')