You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pyproject.toml中使用环境变量实现动态版本控制

在pyproject.toml中实现动态版本控制(环境变量优先)

当然可以实现,pyproject.toml本身是静态配置,但可以通过setuptools的动态版本机制结合Python逻辑完成需求,具体步骤如下:

1. 配置pyproject.toml

在pyproject.toml中声明使用动态版本,并指定版本获取的模块属性:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "my_package"
# 声明version为动态字段
dynamic = ["version"]

[tool.setuptools.dynamic]
# 指定从my_package._version模块的get_version函数获取版本
version = {attr = "my_package._version.get_version"}

2. 编写版本逻辑模块

在你的包目录(my_package/)下创建_version.py文件,实现环境变量检测与版本 fallback:

import os
# 导入你的包以读取默认版本(确保my_package/__init__.py里有__version__定义)
from my_package import __version__ as default_version

def get_version():
    # 优先读取环境变量DEV_VERSION
    dev_version = os.environ.get("DEV_VERSION")
    return dev_version if dev_version is not None else default_version

3. 确保包内默认版本存在

在my_package/__init__.py中保留原有的版本定义:

__version__ = "1.0.0"  # 替换为你的基础版本号

测试使用

  • 构建开发版本:设置环境变量后执行构建命令
    export DEV_VERSION=1.0.0.dev1
    python -m build
    
  • 构建正式版本:直接执行构建命令,会自动使用my_package/__init__.py中的版本
    python -m build
    

内容的提问来源于stack exchange,提问作者Ilya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:56:05