ADF管道调用Databricks时安装en_core_web_sm报E053错误如何解决
报错根因
触发E053 Could not read config file错误的核心原因有两个:
- 版本不兼容:默认执行
pip install spacy会拉取最新的3.x版本spacy,但环境中残留了2.2.5版本的旧en_core_web_sm模型,spacy 3.x无法识别2.x系列模型的目录结构,直接读取配置失败。 - 脚本逻辑有缺陷:写入脚本时带了多余前置缩进,且调用pip/python时没有指定Databricks集群的默认解释器绝对路径,部分场景下依赖会被安装到系统其他python环境下,导致安装的模型文件残缺。另外原路径
dbfs:/Filestore/scripts大小写错误,Databricks默认存储路径为dbfs:/FileStore/scripts(FileStore首字母大写),可能导致脚本执行时路径识别异常。
修复方案
方案1:使用集群初始化脚本(生产环境推荐)
- 先删除原有错误脚本,重新写入版本匹配、路径正确的安装脚本,执行以下notebook代码:
# 创建正确路径的脚本目录 dbutils.fs.mkdirs("dbfs:/FileStore/scripts/") # 写入无多余缩进、绑定版本、指定解释器路径的安装脚本 dbutils.fs.put("dbfs:/FileStore/scripts/spacy.sh", """#!/bin/bash
/databricks/python/bin/pip install --upgrade pip
固定spacy版本为适配Python3.8的稳定3.7.4版本
/databricks/python/bin/pip install spacy==3.7.4
下载对应3.7.x系列的匹配模型,避免版本错位
/databricks/python/bin/python -m spacy download en_core_web_sm-3.7.1
""", True)
```
2. 进入对应Databricks集群的配置页,打开「高级选项」-「Init 脚本」板块,添加脚本路径dbfs:/FileStore/scripts/spacy.sh,保存配置后完全重启集群,初始化脚本仅在集群启动阶段生效,节点启动完成后手动执行脚本无法覆盖全节点环境。
方案2:Notebook内直接安装(交互式开发场景推荐)
不需要配置初始化脚本,直接在notebook的第一个代码单元执行以下命令,执行完成后自动重启python内核即可生效:
%pip install spacy==3.7.4 %python -m spacy download en_core_web_sm-3.7.1 dbutils.library.restartPython()
安装验证
集群/内核重启完成后,执行以下代码,无报错即修复成功:
import spacy nlp = spacy.load("en_core_web_sm") # 简单功能测试 doc = nlp("Azure Databricks spacy model install success") print([(ent.text, ent.label_) for ent in doc.ents])
注意:spacy主库和语言模型的版本必须严格匹配,前两位版本号需要完全一致(例如3.7.x版本的spacy必须搭配3.7.x系列的en_core_web_sm),跨大版本(2.x/3.x)的模型和主库完全不兼容,会反复触发配置文件读取错误。
内容的提问来源于stack exchange,提问作者Tinniam V. Ganesh
相关产品推荐
相关产品推荐

