python3 -m build ... 通过命令行参数提供版本号
python3 -m build ... supply version number via command line argument
我使用 python3 -m build
构建我的 python 包,如官方文档中所述:Packaging Projects.
但我不想在源代码中存储我的版本号,因为这会在 git 存储库中造成太多无用的更改。
有没有办法在 setup.cfg
中将 version
留空并通过 python3 -m build
命令行提供版本?
我使用推荐的pyproject.toml
文件:
[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
我能得到的最接近的是使用如下命令构建后端 setuptools
:
python -m build \
--config-setting=--global-option=egg_info \
--config-setting=--global-option=--tag-build=SUFFIX
这会为版本字符串添加一个后缀。
因此,如果您在 setup.cfg
中将版本字符串设置为 1
,并在命令行中将 SUFFIX
设置为 .2.3
,您将得到 1.2.3
。
这是一个 hack,但似乎工作得很好。测试:
- Python 3.6.9
- build 0.6.0.post1
- 设置工具 58.0.2
不保证它在可预见的将来会继续工作。对于长期解决方案,也许值得关注 and/or 权衡 setuptools feature request.
参考文献:
我找到了这个解决方案:
# setup.py
from setuptools import setup
import os
setup(version=os.environ.get('BUILD_VERSION'))
像这样调用构建:
BUILD_VERSION=... python3 -m build
我使用 python3 -m build
构建我的 python 包,如官方文档中所述:Packaging Projects.
但我不想在源代码中存储我的版本号,因为这会在 git 存储库中造成太多无用的更改。
有没有办法在 setup.cfg
中将 version
留空并通过 python3 -m build
命令行提供版本?
我使用推荐的pyproject.toml
文件:
[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
我能得到的最接近的是使用如下命令构建后端 setuptools
:
python -m build \
--config-setting=--global-option=egg_info \
--config-setting=--global-option=--tag-build=SUFFIX
这会为版本字符串添加一个后缀。
因此,如果您在 setup.cfg
中将版本字符串设置为 1
,并在命令行中将 SUFFIX
设置为 .2.3
,您将得到 1.2.3
。
这是一个 hack,但似乎工作得很好。测试:
- Python 3.6.9
- build 0.6.0.post1
- 设置工具 58.0.2
不保证它在可预见的将来会继续工作。对于长期解决方案,也许值得关注 and/or 权衡 setuptools feature request.
参考文献:
我找到了这个解决方案:
# setup.py
from setuptools import setup
import os
setup(version=os.environ.get('BUILD_VERSION'))
像这样调用构建:
BUILD_VERSION=... python3 -m build