Python设置工具从命令行覆盖版本

Python设置工具从命令行覆盖版本,python,setuptools,thoughtworks-go,Python,Setuptools,Thoughtworks Go,我正在为一个python项目设置一个连续交付系统,我正在试图弄清楚如何通过egg_info设置项目构建的整个版本字符串 我正在使用thoughtworks GO,它有一个内置的版本跟踪标签,名为GO_PIPELINE_label。我想使用此版本作为参数调用setup_tools egg building命令,完全覆盖setup.py中的版本 例如: 似乎导致 'dist/myproject-0.0.01.2.3.4-py2.7.egg' 它似乎总是包含setup.py版本和命令行版本。我的s

我正在为一个python项目设置一个连续交付系统,我正在试图弄清楚如何通过egg_info设置项目构建的整个版本字符串

我正在使用thoughtworks GO,它有一个内置的版本跟踪标签,名为GO_PIPELINE_label。我想使用此版本作为参数调用setup_tools egg building命令,完全覆盖setup.py中的版本

例如:

似乎导致

'dist/myproject-0.0.01.2.3.4-py2.7.egg' 
它似乎总是包含setup.py版本和命令行版本。我的setup.py如下所示:

import os
from setuptools import setup, find_packages
from setuptools.command.install import install

ROOT_DIR = os.path.dirname(__file__)
SOURCE_DIR = os.path.join(ROOT_DIR)

# python setup.py egg_info -rb14 bdist_egg rotate -m.egg -k5
# python setup.py egg_info --tag-build=1.2.3.4 bdist_egg

version = ''

setup(name='myproject',
    version=version,
    description='baa',
    author='Me',
    author_email='irrelevant@domain.com',
    packages=['submodule', 'another.submodule'],
    package_data = {
                       '': ['*.xsd'],
                       },
    install_requires=['cmd2',
                    'dnspython',
                    'ordereddict',
                    'prettyprint',
                    'pycontrol',
                    'simplejson',
                    'suds',
                    'pyparsing<2.0.0',
                    'urllib3',
                    'lxml',
                    ]
    )
导入操作系统
从setuptools导入设置中,查找\u包
从setuptools.command.install导入安装
ROOT\u DIR=os.path.dirname(\u文件\u)
SOURCE\u DIR=os.path.join(ROOT\u DIR)
#python setup.py egg_info-rb14 bdist_egg rotate-m.egg-k5
#python setup.py egg_info——标记build=1.2.3.4 bList_egg
版本=“”
安装程序(name='myproject',
版本=版本,
description='baa',
“我”,
作者(电邮地址)irrelevant@domain.com',
packages=['submodule','other.submodule'],
包_数据={
'':['*.xsd'],
},
install_requires=['cmd2',
“dnspython”,
“订购信息技术”,
“预打印”,
“pycontrol”,
“simplejson”,
“肥皂水”,

'pyparsing一个选项是在调用setup之前解析选项并设置如下所示的版本

from optparse import OptionParser
parser = OptionParser("")
parser.add_option("--tag-build", dest="version")
(info,a)=parser.parse_args()
version = info.version
print "version is ", version

您可以尝试将版本作为位置命令行参数提供,然后在执行安装程序之前将其删除:

import sys
from setuptools import setup

version = sys.argv[1]
del sys.argv[1]

setup(name='myproject',
    version=version,
    ...
然后你会像这样执行它:

python setup.py '1.2.3.4' egg_info

这不起作用,将破坏easy_install setup.py脚本。
python setup.py '1.2.3.4' egg_info