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

标签 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 中提供的版本字符串

我并不关心版本/构建字符串是否为 under version control ,尽管看起来该版本在那里是有意义的。

所以我想问题也许是如何从 setup.py 将一些构建信息注入(inject)到我的项目中?

最佳答案

我决定采取以下措施:

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__ 行,但目前看来效果很好.

关于python - 如何将版本/构建信息添加到我的项目和 setup.py 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26367360/

相关文章:

python - 如何计算自相关时间信号的相位谱

python - 我怎样才能得到Python的每日平均值?

SQLite 和版本控制系统

javascript - 如何自动更新url中js文件的版本

c# - 核心库和扩展库的版本控制

javascript - 设备/服务器开发中的版本控制

python - 常数的不定积分

python - 如何在Python中显示真实的数值?

java - 在构建用于分发的可执行 JAR 时选择正确的 Java、JRE 和 JDK 版本?

ios - 将版本更改为 Swift 1.2 而不是 Swift 2.1