微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有什么实际的原因为什么我必须在python源代码中嵌入一个代码版本?

如何解决有什么实际的原因为什么我必须在python源代码中嵌入一个代码版本?

在我的源代码中必须嵌入代码版本时,是否有任何实际原因?我对setup.py很感兴趣,但也有一些使用Property 'subscribe' does not exist on type 'Roster'. Property 'pipe' does not exist on type 'Roster'. 的人。 “嵌入源代码”是指我必须将版本号以文本形式写入文件中,而不是通过其他方式填充python字段。

在其他语言中,我设置了构建脚本以了解git标签,然后完全通过标签管理版本号。这意味着在回购协议中永远不会提交“更改版本号”。我要做的就是标记新版本的提交并运行构建。

因此,作为一个理论示例,我可以:

__version__

我不清楚这是否行得通。 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="author@example.com",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',) 的结果是在上传到软件包存储库之前或由第三方下载时进行了解析?当然,只有在其他人通过pip下载软件包时,才可以在git repo上传之前使用它。

同样,我是否正确地认为如果将其应用于setuptools.setup文件,将完全无法填充?

解决方法

从技术上讲,您不必在软件包中嵌入版本。将版本传递到setuptools.setup()将确保将其保存在打包元数据中,以供打包机制处理(例如setuptools,pip,诗歌等)。

将它也包含在包中被认为是一个好习惯,因为在编写需要检查库版本的代码时,它可能很有用({__version__“ dundler”在{ {3}},并在PEP 8中进行了澄清),但是由于Python 3.8嵌入了PEP 396,因此不再需要了:

>>> from importlib.metadata import version
>>> version("wheel")
'0.35.1'

因此您的解决方案可以正常工作,但是我建议您使用importlib.metadata来代替,这将阻止您自己管理子流程。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。