为了简化 python 打包,我正在尝试迁移到使用 pbr。
尽管如此,我还是无法弄清楚如何将包的版本公开到__version__
变量中。
这一点非常重要,因为我确实有很多软件包用户确实依赖于版本变量的存在。
人们应该能够做到:
import somemodule
print(somemodule.__version__)
为了简化 python 打包,我正在尝试迁移到使用 pbr。
尽管如此,我还是无法弄清楚如何将包的版本公开到__version__
变量中。
这一点非常重要,因为我确实有很多软件包用户确实依赖于版本变量的存在。
人们应该能够做到:
import somemodule
print(somemodule.__version__)
我不确定这是否是最好的方法,但我能够发现另一个正在做类似事情的包:mock。
__all__ = (
'__version__',
'version_info'
)
from pbr.version import VersionInfo
_v = VersionInfo('mock').semantic_version()
__version__ = _v.release_string()
version_info = _v.version_tuple()
由于现有答案对所需的某些设置尚不清楚,因此这里有一个包含更多上下文的回复。
首先,更新您的版本字符串setup.cfg
,如果在那里手动跟踪它。
否则,如果从 git repo 中提取版本和其他信息:
py setup.py sdist
以生成您的发行版并根据 git 信息(AUTHORS
、ChangeLog 等)更新本地文件。注意:从更新的 Git 标签生成新版本的最快命令是python setup.py install
,但我看到了不要使用它的警告。它对我来说很好,但可能只是我的特定设置。使用sdist
or abdist_xxx
将生成一个完整的分布,如果你不使用它,你需要删除它。
__init__.py
my_package/__init__.py
all = ('__version__')
from pbr.version import VersionInfo
# Check the PBR version module docs for other options than release_string()
__version__ = VersionInfo('<my_package>').release_string()
然后在脚本中使用包
我的脚本.py
import my_package
print(my_package.__version__)
有关更多详细信息,请参阅pbr.version
模块文档。