setup.py(setuptools)和源代码中的自动版本号?

发布于 2021-01-29 15:18:02

情况:

我有一个python库,由git控制,并与distutils / setuptools捆绑在一起。我想基于git标签自动生成版本号,无论是setup.py sdist命令还是类似命令,以及库本身。

对于第一个任务,我可以使用git describe类似的解决方案(请参阅
如何在包中获取setup.py(setuptools)中定义的版本?)。

例如,当我在标签“ 0.1”中并调用“ setup.py sdist”时,我得到“ mylib-0.1.tar.gz”;或“
mylib-0.1-3-abcd.tar.gz”(如果我在标记后更改了代码)。这可以。

问题是:

当我想为库本身提供此版本号时出现问题,因此它可以在用户代理HTTP标头中以“ mylib / 0.1-3-adcd”发送它。

如果按照我如何在程序包中的setup.py(setuptools)中定义的版本setup.py version那样添加命令,然后会在制作完标记后生成version.py,因为它将标记用作值。但是在这种情况下,我需要在制作了version标签之后再进行一次提交,以使代码一致。反过来,这需要新的标签来进一步捆绑。

问题是:

如何打破这种依赖关系圈(generate-commit-tag-generate-commit-tag -…)?

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您还可以反转依赖项:将版本放入mylib/__init__.py,在setup.py中解析该文件以获取版本参数,然后在命令行上使用git tag $
    {setup.py –version)创建标签。

    git tag -a v$(python setup.py --version) -m 'description of version'
    

    有什么您想做的更复杂的事情我还不了解吗?



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看