Azure AutoML Notebook导入mltable触发ImportError问题求助
解决Azure AutoML Notebook中mltable导入的ImportError问题
问题背景
在Azure AutoML Notebook(Spark 3.2 + Python 3.8环境)中,已执行以下命令安装依赖:
%pip install -U mltable azureml-dataprep[pandas]
且已预装azure-ai-ml包,但执行import mltable时触发如下ImportError:
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) /tmp/ipykernel_23522/3630867241.py in <module> 16 from azure.ai.ml.entities import AmlCompute 17 ---> 18 import mltable 19 import os /nfs4/pyenv-da563906-c8c8-4c39-89f1-22def948bc6a/lib/python3.8/site-packages/mltable/__init__.py in <module> 9 any Python environment, including Jupyter Notebooks or your favorite Python IDE. 10 """ ---> 11 from .mltable import MLTable, load, from_delimited_files, from_parquet_files, from_json_lines_files, from_paths, \ 12 from_delta_lake, DataType, MLTableFileEncoding, MLTableHeaders 13 /nfs4/pyenv-da563906-c8c8-4c39-89f1-22def948bc6a/lib/python3.8/site-packages/mltable/mltable.py in <module> 20 from azureml.dataprep.api._constants import ACTIVITY_INFO_KEY, ERROR_CODE_KEY, \ 21 COMPLIANT_MESSAGE_KEY, OUTER_ERROR_CODE_KEY ---> 22 from azureml.dataprep.api._dataframereader import get_dataframe_reader, to_pyrecords_with_preppy, \ 23 _execute 24 from azureml.dataprep.api.mltable._mltable_helper import _download_mltable_yaml, _parse_path_format, _PathType, ImportError: cannot import name 'to_pyrecords_with_preppy' from 'azureml.dataprep.api._dataframereader' (/home/trusted-service-user/cluster-env/env/lib/python3.8/site-packages/azureml/dataprep/api/_dataframereader.py)
问题原因
这是mltable与azureml-dataprep版本不兼容导致的:新版mltable依赖azureml.dataprep中的to_pyrecords_with_preppy方法,但集群预装的azureml-dataprep版本过低,没有这个方法。
修复步骤
- 卸载现有冲突包
%pip uninstall -y mltable azureml-dataprep
- 指定兼容版本重新安装(适配Python 3.8/Spark 3.2环境)
%pip install mltable==1.3.0 azureml-dataprep==4.12.0 azureml-dataprep[pandas]==4.12.0
- 重启Notebook内核,再执行
import mltable验证。
额外注意事项
- Azure AutoML Spark集群会预装部分依赖,手动升级时容易出现版本冲突,建议优先使用集群兼容的包版本。
- 如果仍有问题,可通过
pip show azureml-dataprep和pip show mltable命令确认版本匹配情况。
内容的提问来源于stack exchange,提问作者Syed Shaharyaar Hussain
相关产品推荐
相关产品推荐

