首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python3 -m构建..。通过命令行参数提供版本号

python3 -m构建..。通过命令行参数提供版本号
EN

Stack Overflow用户
提问于 2021-08-18 20:27:21
回答 2查看 863关注 0票数 2

我使用python3 -m build构建我的python包,就像官方文档:包装项目中所记录的那样。

但是我不想将我的版本号存储在源代码中,因为这会在git存储库中产生太多无用的更改。

是否有办法使versionsetup.cfg中保持空,并通过python3 -m build命令行提供版本?

我使用推荐的pyproject.toml文件:

代码语言:javascript
运行
复制
[build-system]
requires = [
    "setuptools>=42",
    "wheel"
]
build-backend = "setuptools.build_meta"

Python中的相关问题:https://discuss.python.org/t/avoid-having-version-number-in-source-code/10188

相关问题:https://github.com/pypa/build/issues/347

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-09 18:58:57

我找到了这个解决方案:

代码语言:javascript
运行
复制
# setup.py
from setuptools import setup
import os
setup(version=os.environ.get('BUILD_VERSION'))

像这样调用build:

代码语言:javascript
运行
复制
BUILD_VERSION=... python3 -m build
票数 1
EN

Stack Overflow用户

发布于 2021-09-06 21:04:49

我能得到的最接近的命令是使用类似于setuptools构建后端的以下命令:

代码语言:javascript
运行
复制
python -m build \
--config-setting=--global-option=egg_info \
--config-setting=--global-option=--tag-build=SUFFIX

这将向版本字符串添加一个后缀。

因此,如果在命令行中将版本字符串设置为1,在setup.cfg中将SUFFIX设置为.2.3,则将获得1.2.3

这是一次黑客攻击,但似乎运作得很好。经以下测试:

  • Python 3.6.9
  • 构建0.6.0.post1
  • setuptools 58.0.2

不能保证它在可预见的将来将继续发挥作用。对于更长期的解决方案,也许值得关注和/或权衡一下这个setuptools特性请求

参考资料

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68838922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档