Python 使用PyYaml设置非字符串变量

Python 使用PyYaml设置非字符串变量,python,pyyaml,mkdocs,Python,Pyyaml,Mkdocs,我使用的是mkdocs系统,它是使用yaml文件配置的,通过PyYml解析。我希望能够在其mkdocs.yml中指定环境变量,这在mkdocs生态系统中是不可能的,但是使用PyYml special存在解决方法!!python/object/apply:os.getenv语法非常适合字符串类型的yaml键 但是,这不起作用: plugins: - search - pdf-export: combined: !!python/object/apply:os.get

我使用的是mkdocs系统,它是使用yaml文件配置的,通过PyYml解析。我希望能够在其
mkdocs.yml
中指定环境变量,这在mkdocs生态系统中是不可能的,但是使用PyYml special
存在解决方法!!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'>
PS>$Env:PDF\u EXPORT\u composed='true'
PS>mkdocs构建
...
错误-配置值:“插件”。错误:插件值:“合并”。
预期类型:但收到:
我查看了PyYAML部分的YAML标记和Python类型,但没有结果。我猜形式是:

!!python/object/apply:module.f | f(…)的值


我需要pythons
distutils.util.strobool(os.getenv(“PDF\u EXPORT\u COMBINED”)
时可以使用,但不确定使用该语法是否可行。

您应该使用一个函数
y
创建自己的模块
x
,该函数同时执行getenv和strobool,然后运行`!python/object/apply:x.y[“PDF_EXPORT_COMBINED”]而不是尝试嵌套函数调用,希望apply能够处理这些事情。Thx,不知道如何在外部工具tho的上下文中做到这一点,但我想这是可以做到的。如果您已经通过包管理器安装了mkdocs,请查看命令的标题,它应该会向您显示它使用的python(或者使用它使用的
哪个
等)。如果你已经用pip安装了mkdocs,你就知道你使用了哪个virtualenv。在任何一种情况下,只需将你的模块存储在存放python可执行文件的
lib/pythonXY/site packages
目录旁边的
中。