首页 > 解决方案 > 使用 setup.py 中的 setuptools.setup 值显示 __version__

问题描述

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

import setuptools

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

我想获得mytools.__version__基于版本值的共同特征,例如

import mytools
mytools.__version__
>>>'0.1.0'

setuptools 中有本地/简单的方法吗?__version__在 setuptools 中找不到对的引用。此外,我不想存储版本,__init__.py因为我更愿意将版本保留在当前位置 (setup.py)。类似问题的许多答案并没有说明我的具体问题,例如如何获得我的包中 setup.py (setuptools) 中定义的版本?

标签: pythonsetuptools

解决方案


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

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

照这样说...

这样的事情通常是这样解决的:

# my_top_level_module/__init__.py

import importlib.metadata

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

参考资料


推荐阅读