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

Databricks中调用Notebook函数出现NameError问题求助

问题解决:Databricks循环调用Notebook后无法找到函数

问题原因

dbutils.notebook.run()会启动独立的执行进程运行目标Notebook,该进程的上下文与当前Notebook完全隔离——即便执行成功,目标Notebook里定义的函数、变量也不会同步到当前Notebook的会话中。而手动在不同代码块单独执行时,本质是用%run魔法命令在当前会话上下文里加载目标Notebook代码,所以函数能正常调用。

解决方案

放弃dbutils.notebook.run(),改用%run命令动态导入目标Notebook,确保函数加载到当前会话。由于%run是魔法命令,无法直接在Python循环中执行,可通过exec()实现循环导入:

functions_notebooks = ["../functions/other_functions",
                      "../functions/general_functions"]

for notebook in functions_notebooks:
    exec(f'%run {notebook}')

# 现在可正常调用函数
variable1, variable2, variable3 = function1_other_functions()

补充说明

  • %run是Databricks专属魔法命令,作用是在当前会话中执行指定Notebook的全部代码,等价于把目标Notebook的代码直接复制到当前代码块执行,因此所有定义的函数、变量都会在当前会话生效。
  • 如果目标Notebook需要传递参数,可在%run后追加参数,例如%run ../functions/other_functions $param1=value1。

内容的提问来源于stack exchange,提问作者Gerlex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:17:03