如何向项目和setup.py添加版本/构建信息?

时间:2014-10-14 18:05:12

标签: python version versioning setup.py

several questions有关将版本字符串转换为setup.py的信息。我的要求略有不同:

  1. 我需要版本(例如1.2.3)字符串和内部版本号($ git describe --tags --always HEAD的结果)
  2. 我需要在我的Flask应用程序中提供这些版本(例如app.config['VERSION'] = '1.2.3'app.config['BUILD'] = '1.2.3-33-g93abc32'
  3. 我需要setup.py
  4. 中提供的版本字符串

    如果版本/构建字符串是under version control,我真的不在乎,虽然看起来该版本在那里是有意义的。

    所以我想这个问题或许是如何从setup.py向我的项目注入一些构建信息?

1 个答案:

答案 0 :(得分:1)

我决定做的是滚动以下内容:

setup.py

# Stuff

import subprocess

__version__ = '1.2.3'
__build__ = subprocess.check_output('git describe --tags --always HEAD'
                                    .split()).decode().strip()

with open('mypkg/_version.py', 'w') as f:
    f.write('''\
# I will destroy any changes you make to this file.
# Sincerely,
# setup.py ;)

__version__ = '{}'
__build__ = '{}'
'''.format(__version__, __build__))

# other stuff

settings.update(
    version=__version__,
# more stuff
)

我可能会使用re模块来简单地查找/替换__version____build__行,但是现在看起来效果还不错。