我正在为python项目建立一个持续交付系统,我正在试图弄清楚如何通过egg_info设置项目构建的ENTIRE版本字符串。
我正在使用带有内置版本跟踪标签的Thoughtworks GO,名为GO_PIPELINE_LABEL。我想调用setup_tools egg building命令,将此版本作为参数完全覆盖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中取消/删除版本变量,但无论我做什么似乎都会导致版本值的串联,而null似乎等于'0.0.0'。有谁知道如何利用setup_tools并设置我的版本字符串?
谢谢, ķ
答案 0 :(得分:0)
您可以尝试提供版本作为位置命令行参数,然后在执行安装程序之前将其删除:
df %>%
pluck(1)
然后您将像这样执行它:
import sys
from setuptools import setup
version = sys.argv[1]
del sys.argv[1]
setup(name='myproject',
version=version,
...
答案 1 :(得分:-1)
一个选项是在调用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