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

导入自定义Python包遇ModuleNotFoundError:ADF触发Databricks任务异常

问题解决:ADF触发Databricks作业时自定义模块导入失败

核心原因

Databricks手动运行Notebook与ADF触发作业的上下文环境存在差异:手动运行时Notebook的工作目录默认是其所在Workspace路径,而ADF作业的默认工作目录可能不同,且路径解析规则有区别,导致自定义模块路径未被正确识别。

修复步骤

1. 修正sys.path的路径格式

你之前添加的路径缺少开头斜杠,且未适配Databricks作业的路径规则,修改为绝对DBFS路径格式:

import sys
# 使用DBFS格式的绝对路径
sys.path.append("dbfs:/Workspace/folder1/subfolder1/myproject")

注:部分Databricks环境支持直接使用/Workspace/...格式,但dbfs:/前缀的兼容性更强,作业环境下推荐使用。

2. 动态获取项目路径(推荐)

硬编码路径易出错,通过dbutils动态获取当前Notebook路径,自动计算项目根目录:

import sys
from pathlib import Path

# 获取当前Notebook的完整Workspace路径
notebook_path = dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get()
# 提取项目根目录(baseMLPipeline所在的myproject目录)
project_root = str(Path(notebook_path).parent)
# 添加到Python路径
sys.path.append(project_root)

此方法无需修改代码即可适配项目路径变动。

3. 配置ADF作业的工作目录

在ADF的Databricks作业任务配置中,将工作目录设置为项目根目录/Workspace/folder1/subfolder1/myproject,确保作业启动时默认路径指向项目目录。

4. 将模块打包为Databricks库

若上述方法无效,可将modules文件夹打包为zip包(需包含__init__.py),上传为Databricks工作区库,并在ADF作业的集群依赖中添加该库。集群启动时会自动将库路径加入Python环境,避免路径问题。

5. 排查集群初始化脚本

若集群使用了初始化脚本,检查脚本是否修改了sys.path或覆盖了环境变量,导致自定义模块路径被移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:46:32