【问题标题】:Have setup.py and easy_install inject a version number into a source file让 setup.py 和 easy_install 将版本号注入源文件
【发布时间】:2013-11-23 16:59:36
【问题描述】:

我是否能够配置 setup.py 然后通过 easy_install 安装 egg 以便它可以做某种模板或将版本号注入我的源文件之一? 我的setup.py 中有version = os.environ.get('BUILD_NUMBER', 0.1),我想将此版本号放入其中一个源文件中,因为我需要一个版本号来运行一些东西。我不硬编码的原因是每次有新版本时版本号都会改变。

我想将此版本/内部版本号注入运行脚本 - 而不是 Python 文件。这个运行器脚本由 easy_install 发送到 /usr/local/bin。

【问题讨论】:

标签: python python-2.7 build installation easy-install


【解决方案1】:

如果您的构建工具已经在生成构建号,为什么不让它在您的项目中填写模板 version.py?

  • project/
    • project/__init__.py
    • project/version.py

version.py 简单的地方:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
__all__ = ('__version__',)
__version__ = $BUILD_NUMBER

这样,它始终可用,并且不依赖于 setup.py 元数据之类的东西。对于您的 setup.py 脚本,请尝试以下操作:

def get_version():
    """
    Gets the latest version number out of the package,
    saving us from maintaining it in multiple places.
    """
    local_results = {}
    execfile('project/version.py', {}, local_results)
    return local_results['__version__']

setup(
    name="Project",
    version=get_version(),
    ...
)

【讨论】:

  • 这行__version__ = $BUILD_NUMBER 有什么意义? $BUILD_NUMBER 是 bash 变量,而 version.py 是 Python 文件?
  • @poleapple 这只是一个占位符,因为我无法知道您使用的是什么构建系统。只需将其用作模板,并在构建时替换 $BUILD_NUMBER,或附加到文件,或使用一百种不同的方式。
猜你喜欢
  • 2011-10-10
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 2019-07-26
相关资源
最近更新 更多