You need to enable JavaScript to run this app. Azure Databricks中通过get_ipython调用%run报文件不存在错误
优惠活动
大模型
产品
解决方案
定价
更多

Azure Databricks中通过get_ipython调用%run报文件不存在错误

Azure Databricks 代码形式调用run_line_magic复刻%run导入的报错排查

问题场景

  • 目标待导入模块mynbk.py与当前运行的myfile笔记本处于同一工作区目录层级
  • 直接在单元格内执行魔法命令%run ./mynbk,可正常完成导入、无运行异常
  • 替换为Python代码形式调用get_ipython().run_line_magic('run', './mynbk')时,抛出报错:Exception: File './mynbk.py' not found,无法达成预期导入效果

根因定位

Databricks 环境中两种调用方式的相对路径解析基准不一致:

  • 单元格内直接书写的%run ./xxx语法,默认以当前笔记本所在的工作区路径为相对路径解析根,可正常定位同目录文件
  • 通过Python代码调用get_ipython().run_line_magic时,相对路径的解析基准会切换为集群驱动节点的本地进程工作目录(通常为/databricks/driver这类本地系统路径),自然无法定位到工作区中的文件

解决方法

  • 方法1:动态拼接工作区绝对路径作为入参
    利用Databricks内置的上下文接口获取当前笔记本的工作区路径,计算目标模块的完整路径后传入:

    import dbutils
    # 获取当前笔记本的完整工作区路径
    current_nbk_path = dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get()
    # 取当前笔记本所在的目录,拼接目标模块名
    target_nbk_full_path = f"{current_nbk_path.rsplit('/', 1)[0]}/mynbk"
    # 调用魔法命令
    get_ipython().run_line_magic('run', target_nbk_full_path)
    

    该方式的路径解析逻辑和原生%run ./mynbk完全对齐,可避免路径解析偏差。

  • 方法2:传入带Workspace前缀的显式绝对路径
    如果已知当前目录的固定工作区路径,可直接将相对路径替换为工作区绝对路径作为入参,例如:

    get_ipython().run_line_magic('run', '/Workspace/你的目录路径/mynbk')
    
  • 方法3:使用dbutils.notebook接口替代魔法命令调用
    如果需要在代码逻辑中动态触发笔记本运行/导入,可直接使用Databricks原生的笔记本运行接口,其默认相对路径解析逻辑和%run一致:

    # 接口默认以当前笔记本路径为根解析相对路径
    dbutils.notebook.run("./mynbk", timeout_seconds=60)
    

注意事项

  • Databricks的%run命令会自动匹配同路径下的笔记本文件,传入路径时不需要手动追加.py后缀,手动追加反而可能触发文件识别失败
  • 传入run_line_magic的路径必须指向/Workspace/下的工作区路径,仅写本地相对路径无法被Databricks的笔记本运行逻辑识别

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 08:57:01