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

在Python环境渲染Quarto文档时,无法从命令行传递参数值到Quarto文件

在Python环境渲染Quarto文档时,无法从命令行传递参数值到Quarto文件

嗨,我来帮你解决这个问题~ 你遇到的NameError是因为Quarto不会自动把命令行传递的参数直接变成Python里的全局变量,和R里直接用params$foo的方式不一样,Python需要显式地从Quarto的参数对象里获取值。

解决这个问题分两步:

1. 在Quarto文档的YAML头部声明参数

首先得在test.qmd的YAML部分添加params字段,告诉Quarto这个参数是合法的(可以给个默认值,方便直接渲染文档时也能正常运行):

---
title: "Test File"
format: html
html:
  embed-resources: true
execute:
  echo: False
jupyter: python3
params:
  foo: 0  # 默认值,命令行传递的参数会覆盖这个值
---

2. 在Python代码块中获取参数

在Python代码里,你需要导入Quarto的参数工具来获取传递的值,然后就可以正常使用了:

from quarto import get_params

# 获取所有参数组成的字典
params = get_params()
# 取出foo参数的值
print(params['foo'])

修改后的完整test.qmd示例

---
title: "Test File"
format: html
html:
  embed-resources: true
execute:
  echo: False
jupyter: python3
params:
  foo: 0
---

# Title


Print this in report
```{python}
from quarto import get_params
params = get_params()
print(params['foo'])
### 重新运行命令行
你之前的命令是对的,直接重新执行:
```bash
quarto render test.qmd -P foo:5 --output test_cmd_out.html

这次就能正常渲染,并且在报告里输出5啦~

简单总结一下:Python环境下不能直接用参数名当变量,必须通过quarto.get_params()获取参数字典,再通过键名访问对应的值,而R里的params$foo写法不适用Python哦。

备注:内容来源于stack exchange,提问作者ViSa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:43:04