我必须在源代码中嵌入代码版本有什么实际原因吗?我明确地感兴趣setup.py但也有一些用处__version__
。我所说的“嵌入源代码”是指我必须将版本号以文本形式写入文件中,而不是通过其他方式填充 python 字段。
在其他语言中,我将构建脚本设置为了解 git 标签,然后完全通过标签管理版本号。这意味着存储库中永远不会有“更改版本号”的提交。我所要做的就是标记新版本的提交并运行构建。
因此,作为一个理论示例,我可能:
def _get_version()
command = ['git', 'describe', '--tags', '--match' 'versions/[0-9]*.[0-9]*']
result = subprocess.run(command, stdout=subprocess.PIPE).stdout.decode('utf-8')
return result.replace('-', '+', 1).replace('versions/', '')
setuptools.setup(
name="example-pkg-YOUR-USERNAME-HERE", # Replace with your own username
version=_get_version(),
author="Example Author",
author_email="[email protected]",
description="A small example package",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/pypa/sampleproject",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.6',
)
我不清楚这是否有效。的结果是setuptools.setup
在上传到包存储库之前或由第三方下载时解析?当然,git repo 仅在上传之前可用,而其他人通过 pip 下载包时则不可用。
同样,我是否正确地认为,如果应用于__version__
file?