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

如何在Quarto中引入外部Python脚本并执行,同时访问其变量?

解决Quarto中引入外部Python脚本并访问变量的问题

你遇到的NameError是因为当前代码单元格的命名空间无法访问外部脚本执行后生成的变量。以下是几种可靠的解决方法:

方法1:使用IPython魔法命令%run执行脚本

直接在代码单元格中用%run命令运行外部脚本,脚本内的变量会直接进入当前会话的全局命名空间:

修改test.qmd的第一个Python单元格:

#| echo: true
#| eval: true
%run lm.py

方法2:通过Python内置函数读取并执行脚本

如果不想依赖IPython魔法命令,可以用exec函数读取脚本内容并执行:

#| echo: true
#| eval: true
with open("lm.py", "r", encoding="utf-8") as f:
    exec(f.read())

修改后的完整示例

test.qmd

---
format: pdf
execute:
  cache: false
---

```{python}
#| echo: true
#| eval: true
%run lm.py
print(model.summary())
### lm.py(保持不变)
```python
import statsmodels.api as sm
import pandas as pd

mtcars = sm.datasets.get_rdataset('mtcars').data

model = sm.formula.ols('am ~ cyl + mpg', data = mtcars).fit()

原写法失效的原因

你原本使用#| file: lm.py的方式,Quarto只是将脚本内容加载到单元格中,但部分场景下(如执行环境隔离)变量不会被保留到后续单元格的命名空间。而%run或exec是直接在当前执行会话中运行脚本,变量会被持久化,后续单元格可以直接访问。

内容的提问来源于stack exchange,提问作者Carlos Luis Rivera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:42:41