在“pyproject.toml”中使用环境变量进行版本控制

Ily*_*lya 17 python version setuptools pyproject.toml

我正在尝试将我的包从 迁移setup.pypyproject.toml,但我不确定如何以与以前相同的方式进行动态版本控制。目前,当构建用于开发时,我可以使用环境变量传递开发版本。

该文件setup.py看起来类似于:

import os

from setuptools import setup

import my_package


if __name__ == "__main__":
    dev_version = os.environ.get("DEV_VERSION")
    version = dev_version if dev_version else f"{my_package.__version__}"
    
    setup(
        name="my_package",
        version=version,
        ...
    )
Run Code Online (Sandbox Code Playgroud)

使用文件时有没有办法做类似的事情pyproject.toml

Vor*_*ity 1

如果您使用 Git,另一种可能值得考虑用于您的用例的替代方案是使用setuptools_scm. 它使用您的 git 标签来执行动态版本控制。你的 pyproject.toml 看起来像这样:

[build-system]
requires = ["setuptools", "setuptools-scm"]
build-backend = "setuptools.build_meta"

[tool.setuptools_scm]
"version_scheme" = "post-release"
"local_scheme" = "no-local-version"
"write_to" = "mypackage/version.py"

[tool.setuptools.package-dir]
mypackage = "mypackage"

[project]
name = "mypackage"
...
dynamic = ["version"]
Run Code Online (Sandbox Code Playgroud)