使用 setup.py 中的 setuptools.setup 值显示 __version__

display __version__ using setuptools.setup values in setup.py

我有一个打包的项目 mytools,它使用 setuptools 的设置将其版本存储在 setup.py 项目文件中,例如

import setuptools

setuptools.setup(
name='mytools',
version='0.1.0'
)

我想获得基于版本值的通用 mytools.__version__ 功能,例如

import mytools
mytools.__version__
>>>'0.1.0'

setuptools 中是否有原生/简单的方法可以做到这一点?在 setuptools 中找不到对 __version__ 的引用。 此外,我不想将版本存储在 __init__.py 中,因为我更愿意将版本保留在当前位置 (setup.py)。 类似问题的许多答案并没有说明我的具体问题,例如How can I get the version defined in setup.py (setuptools) in my package?

__version__ 添加到所有顶级模块和包是 PEP 396 的建议。

最近我看到人们越来越关注这个建议及其实际用途,例如这里:

话虽如此...

这样的事情往往是这样解决的:

# my_top_level_module/__init__.py

import importlib.metadata

__version__ = importlib.metadata.version('MyProject')

参考文献: