python 在`pyproject中使用环境变量,用于版本控制的toml`

lf3rwulv  于 2023-04-28  发布在  Python
关注(0)|答案(1)|浏览(170)

我正在尝试将我的软件包从setup.py迁移到pyproject.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,
        ...
    )

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

muk1a3rh

muk1a3rh1#

我想要类似的东西。
不幸的是,toml不支持环境变量,我认为它也不想支持。
我已经尝试了一些自定义构建后端 Package 器,并筛选了setuptools(和setuputils3)的各个层。
我的结论是,没有比编写一个简短的构建脚本来动态编辑pyproject更简单的解决方案了。toml文件...
这种事:

#!/bin/bash

#fix version - as toml doesn't support environment vars...
sed -i -e "s/.*version.*/version=\"${DEV_VERSION}\"/g" pyproject.toml

#build python source and binary packages
python3 -m build

对于您的其他情况(非开发),您可以“动态”拉入版本,如其他人在此回答中所述:https://stackoverflow.com/a/74514742/4126317

相关问题