gpt4 book ai didi

Python setuptools 从命令行覆盖版本

转载 作者:行者123 更新时间:2023-11-28 19:29:40 27 4
gpt4 key购买 nike

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

我正在使用 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 并设置我的版本字符串吗?

谢谢,K

最佳答案

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

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

关于Python setuptools 从命令行覆盖版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19831637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com