使用 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 的建议。
最近我看到人们越来越关注这个建议及其实际用途,例如这里:
- https://gitlab.com/python-devs/importlib_resources/-/issues/100
- https://gitlab.com/python-devs/importlib_metadata/-/merge_requests/125
- 还有一些我现在找不到...
话虽如此...
这样的事情往往是这样解决的:
# my_top_level_module/__init__.py
import importlib.metadata
__version__ = importlib.metadata.version('MyProject')
参考文献:
我有一个打包的项目 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 的建议。
最近我看到人们越来越关注这个建议及其实际用途,例如这里:
- https://gitlab.com/python-devs/importlib_resources/-/issues/100
- https://gitlab.com/python-devs/importlib_metadata/-/merge_requests/125
- 还有一些我现在找不到...
话虽如此...
这样的事情往往是这样解决的:
# my_top_level_module/__init__.py
import importlib.metadata
__version__ = importlib.metadata.version('MyProject')
参考文献: