setuptools在哪里找到包的版本?

时间:2017-05-02 06:54:38

标签: python release setuptools

我想了解github package的版本。我在本地建造它。在release process中,我发现了这个:

VERSION=$(python setup.py --version)

在我的回购中,每当我运行时,我都会得到:

» python setup.py --version
1.0.9.dev29

但我不知道这是从哪里来的。版本1.0.9.dev29既不在setup.cfg中,也不在单独的VERSION文件中。回购中没有版本文件或类似文件。我不明白setuptools如何能够推导出这个版本ID。 documentation没有提供任何提示。

python setup.py --version命令如何工作?

2 个答案:

答案 0 :(得分:2)

psql -f script.sql列出从元数据中获取的包的版本。您的特定项目使用pbr package来处理元数据:

setup.py --version

setup_requires=['pbr>=1.9', 'setuptools>=17.1', 'pytest-runner'], Python Build Reasonableness )通过查看当前git历史记录在包构建时设置版本,请参阅pbr文档的Version section

  

版本可以通过两种方式管理 - 后期修改和预翻版。 Postversion是默认设置,通过在setup.cfg元数据部分中设置版本来启用preversion。在这两种情况下,都可以从git中推断出版本字符串。

     

如果标记了当前检出的修订版本,则该标记将用作版本。

因此,当开发人员运行pbr来构建发行版时, setup.py会查看git存储库元数据并提取版本号,并将其包含在发行版中建造的; pbr源tarball包含带有版本的tar.gz文件。

答案 1 :(得分:0)

每个接受的答案都来自您的git存储库,基于标签并使用pbr扩展名。

不包括如何确定实际字符串。 pbr使用pbr文档中指定的算法,该算法基于回购中创建的最新标签(我假设搜索的是当前签出的分支,但不确定)。

1.0.9.dev29字符串可能意味着您在存储库中有一个1.0.9标记,其中29个提交没有标记。默认情况下,pbr会将.devN后缀添加到不带标签的新提交中,并随每个新的未加标签的提交而增加。

如果将1.0.10标记添加到最新的提交中,则将是新版本,但是如果添加另一个没有标记的提交,则将是1.0.9.dev30

请参见here for More info on the Semantic Versioning used by pbr