Azure中score.py调用自定义Python数据清洗脚本及模块报错咨询
问题解决办法
首先明确:可以在score.py内调用自行编写的清洗脚本,模块找不到报错是路径配置问题,按以下步骤修改即可:
问题根因
Azure ACI部署推理服务时,score.py的默认执行工作目录与本地开发环境不一致,系统路径sys.path不会自动包含score.py所在的目录,因此即便脚本、配置文件与score.py放在同一目录也会导入失败。
具体修改步骤
- 第一步:确保部署打包时已将
cpp_data_prep_methods.py、依赖的csv/txt文件与score.py放在同一级目录,配置推理环境时需指定包含所有这些文件的文件夹作为源目录,不要仅单独上传score.py文件。 - 第二步:取消原有注释的路径添加代码,替换为动态获取当前脚本目录的逻辑,加到导入自定义模块之前:
import sys import os # 新增:将当前score.py所在目录加入系统路径 sys.path.append(os.path.dirname(os.path.abspath(__file__))) from cpp_data_prep_methods import *
- 第三步:如果
cpp_data_prep_methods.py内部读取csv/txt用了相对路径,统一修改为基于脚本路径的绝对路径,示例如下:
# 假设要读取同目录下的config.csv csv_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "config.csv")
- 第四步:修复现有代码的两处隐含错误:
- 新增Model类的导入语句:
from azureml.core.model import Model,否则调用Model.get_model_path会报错 - 删除全局的
init()调用,Azure ML推理服务会自动执行init函数,手动全局调用会提前触发模型加载逻辑导致报错。
- 新增Model类的导入语句:
内容的提问来源于stack exchange,提问作者masterp
相关产品推荐
相关产品推荐

