如何在我的项目和setup.py中添加版本/构建信息?

2 投票
1 回答
3009 浏览
提问于 2025-04-27 13:48

这里有一些关于如何在 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 文件中能使用这个版本字符串

我并不太在意这些版本或构建字符串是否在版本控制中,虽然把版本信息放在那儿似乎是有意义的。

所以我想问的是,如何从 setup.py 文件中把一些构建信息注入到我的项目里呢?

暂无标签

1 个回答

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__ 这两行,但目前来看,这样做已经很好了。

撰写回答