SuperAPI AI 工具集

databricks-python-imports

编程与开发

查看项目

更新于 10-15 20:32

技能介绍

用途:解决 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 日。