如何在Azure Machine Learning作业中安装并使用自定义Python包?
解决Azure ML作业中自定义Python包的安装与导入问题
1. 规范自定义包的目录结构
你的包必须符合Python包的标准结构,否则无法被正确识别:
mlops_i4t/ __init__.py preprocessing/ __init__.py data_utils.py # 存放get_final_dataframe函数 machine_learning/ __init__.py model_utils.py setup.py # 或pyproject.toml
- 每个子目录都需要空的
__init__.py文件,让Python将其识别为包组件 - 编写正确的
setup.py配置包信息,示例:
from setuptools import setup, find_packages setup( name="mlops_i4t", version="0.1.0", packages=find_packages(), )
2. 在Azure ML作业中安装自定义包
方法一:通过conda配置文件指定安装
在作业的YAML配置文件(如job.yml)中,关联包含包安装命令的conda文件:
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json code: ./ command: >- python mlops_i4t/machine_learning/model_utils.py environment: conda_file: ./conda.yml image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
对应的conda.yml文件添加pip安装本地包的指令:
channels: - conda-forge dependencies: - python=3.8 - pip: - . # 安装当前目录下的自定义包
方法二:在作业运行命令中直接执行安装
如果不需要复杂的conda环境,可以在作业命令里先执行pip安装:
command: >- pip install . && python mlops_i4t/machine_learning/model_utils.py
注:这种方式每次作业运行都会重新安装包,适合快速测试场景。
3. 验证包安装状态
可以在作业命令中加入验证步骤,确认包已成功安装:
command: >- pip install . && pip list | grep mlops_i4t && python mlops_i4t/machine_learning/model_utils.py
如果输出中能看到mlops_i4t包的信息,说明安装成功。
4. 检查作业的代码目录配置
确保Azure ML作业的code字段指向的目录包含自定义包的根目录和setup.py/pyproject.toml文件。比如代码都存放在./src下,就需要将code设置为./src,保证作业能访问到包的安装配置文件。
5. 统一使用绝对导入
避免在代码中使用相对导入(如from ..preprocessing import ...),统一使用绝对导入格式:from mlops_i4t.preprocessing import get_final_dataframe,同时确保包已被安装到环境的site-packages目录中。
内容的提问来源于stack exchange,提问作者Niels Hoogeveen
相关产品推荐
相关产品推荐

