使用PyYaml设置非字符串变量

2024-09-19 23:28:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是mkdocs系统,它是使用yaml文件配置的,通过PyYml解析。我希望能够在其mkdocs.yml中指定环境变量,这在mkdocs生态系统中是不可能的,但存在使用PyYml特殊!!python/object/apply:os.getenv语法的解决方法,该语法非常适合字符串类型的yaml键

但是,这不起作用:

plugins:
    - search
    - pdf-export:
        combined: !!python/object/apply:os.getenv ["PDF_EXPORT_COMBINED"]

生成抱怨字符串不是bool值:

PS> $Env:PDF_EXPORT_COMBINED='true'
PS> mkdocs build
...
ERROR - Config value: 'plugins'. Error: Plugin value: 'combined'. 
        Expected type: <class 'bool'> but received: <class 'str'>

我查看了PyYAML部分YAML标记和Python类型^1,但没有结果。我猜形式是:

!python/object/apply:module.f | value of f(...)

可以使用,因为我需要pythondistutils.util.strtobool( os.getenv("PDF_EXPORT_COMBINED") ),但不确定使用该语法是否可行


Tags: 字符串yaml类型objectpdfvalueos语法