Python setuptools переопределяет версию из командной строки

Я настраиваю систему непрерывной доставки для проекта Python, и я пытаюсь выяснить, как установить ВСЮ строку версии сборки проекта через egg_info.

Я использую GO ThinkWorks, который имеет встроенную метку отслеживания версий под названием GO_PIPELINE_LABEL. Я хотел бы вызвать команду создания яйца setup_tools с этой версией как аргумент, полностью перекрывающий версию в setup.py.

например:

GO_PIPELINE_LABEL='1.2.3.4' python setup.py egg_info --tag-build=$GO_PIPELINE_LABEL bdist_egg

кажется, приводит к

'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',
                    ]
    )

Я попытался обнулить / удалить переменную версии в моем файле setup.py, но все, что я делаю, похоже, приводит к объединению значений версии, а нулевое значение равно 0,0.0. Кто-нибудь знает, как я могу использовать setup_tools и установить строку версии?

Спасибо, к

1 ответ

Вы можете попробовать указать версию в качестве позиционного аргумента командной строки, а затем удалить ее перед выполнением установки:

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

Одним из вариантов является анализ варианта и установка версии, как показано ниже, непосредственно перед вызовом программы установки.

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
Другие вопросы по тегам