如何在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
相关产品推荐
相关产品推荐

