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

Azure Data Factory调用Databricks Notebook遇ImportError: dataclass_transform导入失败

Databricks Notebook通过ADF调用时Presidio依赖报错的解决方案

问题原因

Databricks UI中运行Notebook时,%pip安装的库仅作用于当前临时会话;而ADF调用Notebook时会启动新集群会话,或复用集群时未持久化依赖,导致Presidio所需的dataclass_transform(来自typing_extensions库)缺失。此外,默认安装的typing_extensions版本可能过低,不包含该模块。

解决方案

方案1:集群层面预安装依赖

  • 进入Databricks集群配置的库选项卡
  • 点击「安装新库」,选择PyPI源,依次安装以下包:
    • presidio_analyzer
    • presidio_anonymizer
    • spacy
    • typing_extensions>=4.1.0(确保包含dataclass_transform)
  • 安装完成后重启集群,确保依赖在集群启动时即加载完成

方案2:修改Notebook安装命令,强制兼容版本

  • 更新Notebook开头的安装逻辑,先升级typing_extensions,再安装Presidio相关库:
    %pip install --upgrade typing_extensions>=4.1.0
    %pip install presidio_analyzer presidio_anonymizer spacy
    
  • 若spacy模型在线下载不稳定,可提前将en_core_web_lg上传至DBFS,直接加载本地模型:
    import spacy
    # 替换为DBFS上的模型路径
    nlp = spacy.load("/dbfs/path/to/en_core_web_lg")
    
  • 可选:添加依赖检查逻辑,确保安装完成后再执行后续代码:
    import importlib
    import time
    
    def check_dependency():
        try:
            from typing_extensions import dataclass_transform
            return True
        except ImportError:
            return False
    
    # 循环检查直到依赖安装成功
    while not check_dependency():
        %pip install --upgrade typing_extensions>=4.1.0
        time.sleep(5)
    

方案3:使用初始化脚本批量预安装

  • 创建bash脚本install_presidio_deps.sh,内容如下:
    #!/bin/bash
    pip install --upgrade typing_extensions>=4.1.0
    pip install presidio_analyzer presidio_anonymizer spacy
    python -m spacy download en_core_web_lg
    
  • 将脚本上传至DBFS(如dbfs:/databricks/init_scripts/install_presidio_deps.sh)
  • 在集群配置的高级选项->初始化脚本中添加该路径,重启集群后,每次启动都会自动安装依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:05:13