5

为了简化 python 打包,我正在尝试迁移到使用 pbr。

尽管如此,我还是无法弄清楚如何将包的版本公开到__version__变量中。

这一点非常重要,因为我确实有很多软件包用户确实依赖于版本变量的存在。

人们应该能够做到:

import somemodule
print(somemodule.__version__)
4

2 回答 2

3

我不确定这是否是最好的方法,但我能够发现另一个正在做类似事情的包:mock

__all__ = (
    '__version__',
    'version_info'
)

from pbr.version import VersionInfo

_v = VersionInfo('mock').semantic_version()
__version__ = _v.release_string()
version_info = _v.version_tuple()
于 2016-11-12T11:44:29.253 回答
1

由于现有答案对所需的某些设置尚不清楚,因此这里有一个包含更多上下文的回复。

更新您的版本字符串

首先,更新您的版本字符串setup.cfg,如果在那里手动跟踪它。

否则,如果从 git repo 中提取版本和其他信息:

  • 做出新的承诺
  • 生成新版本标签(如果不是开发版本)
  • 运行py setup.py sdist以生成您的发行版并根据 git 信息(AUTHORS、ChangeLog 等)更新本地文件。

注意:从更新的 Git 标签生成新版本的最快命令是python setup.py install,但我看到了不要使用它的警告。它对我来说很好,但可能只是我的特定设置。使用sdistor 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模块文档

于 2019-10-21T22:47:27.143 回答