用途:解决 Databricks 笔记本之间复用代码的问题。核心规则是共享代码必须是纯 Python 文件(.py),不能是带“# Databricks notebook source”头的笔记本;只有纯 Python 文件才能被标准 import 导入。
主要能力与用法:
- 通过 Databricks Asset Bundle 部署笔记本时,需在“# Databricks notebook source”后立即加入 sys.path 设置块,动态计算 bundle 根目录并插入 sys.path,否则导入 src 等包会报 ModuleNotFoundError: No module named 'src'。
- 该块使用 dbutils.notebook.entry_point 获取当前笔记本路径,按 '/src/' 切分得到 bundle 根,再 sys.path.insert(0, root),并用异常处理兼容本地执行。
- 可用 scripts/add_path_setup_to_notebooks.py 批量为所有笔记本添加该设置:python3 scripts/add_path_setup_to_notebooks.py。
- 导入时应使用标准 from config_module import get_configuration;导入语句放在 dbutils.library.restartPython() 之后,以在 SDK 升级后仍可用。
适用场景:跨多个笔记本共享配置模块、数据质量规则、辅助函数;需要在 restartPython() 后仍能导入代码;作为 Asset Bundle 部署的工作流。
限制与注意:%run 在部署的 Asset Bundles 中重启 Python 后不生效,会 NameError;不要用 sys.path 手动插入、复制代码或 exec()/eval() 等变通;笔记本带“# Databricks notebook source”头时不能被 import,应删除该头转换为纯 Python 文件。若模块文件本身是笔记本,需先转换再导入。纯 Python 文件可被作为作业/任务执行,而笔记本适合交互开发与运行。
原文最后更新于 2025 年 10 月 24 日。