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

无法使用Azure Machine Learning SDK v2部署训练完成的模型

解决Azure ML托管部署中相对导入报错问题

问题本质

Azure ML部署环境里,score.py是作为独立主脚本运行的,不属于任何Python包结构,所以用相对导入(比如from . import config)会触发「尝试相对导入但未知父包」的错误,导致进程启动失败。

可行修复方案

1. 替换成绝对导入

把相对导入语句改成基于项目根目录的绝对路径导入。举个例子:

  • 如果原本是from . import config,直接改成import config
  • 如果config.py在子文件夹utils里,就改成import utils.config

2. 手动添加路径到Python搜索列表

要是绝对导入还是不行,在score.py最开头加一段代码,把项目根目录加入Python的搜索路径:

import sys
from pathlib import Path

# 获取当前脚本所在文件夹路径
current_folder = Path(__file__).parent
# 把当前文件夹(或上级,根据你的实际结构调整)加入sys.path
sys.path.append(str(current_folder))
# 要是config在上级目录,就换成current_folder.parent
# sys.path.append(str(current_folder.parent))

之后再正常导入import config就行。

3. 打包模型时带上所有依赖文件

用MLflow存模型的时候,要把config.py这类依赖文件一起打包进模型 artifact。用code_paths参数指定需要包含的文件或文件夹:

import mlflow

mlflow.sklearn.log_model(
    model=你的训练好的模型,
    artifact_path="model",
    code_paths=["config.py", "子文件夹路径/"],  # 把所有依赖的脚本都列在这里
    registered_model_name="use-case1-model"
)

这样部署时,这些文件会和score.py放在同一层级(或指定路径),导入就不会出问题了。

4. 核对部署后的文件结构

部署完成后可以在Azure ML工作室里查看部署的文件目录,确认config.py在score.py能访问到的位置。如果路径不对,调整打包时的code_paths或者score.py里的导入语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:00:07