ModuleNotFound 错误 - 带有预构建 docker 图像的 Azure ML

ModuleNotFound Error - Azure ML with prebuilt docker image

我开发了一个在本地执行时完美运行的模块。

我使用此处找到的预建 docker 映像在 Azure 上创建了一个环境: "azureml/minimal-ubuntu18.04-py37-cpu-推理" https://mcr.microsoft.com/v2/_catalog .此外,使用 pythonScriptStep 到 运行 管道。这是步骤的样子

StepPreprocessing = PythonScriptStep(
    name="Preprocessing",
    script_name=e.preprocess_script_path,
    arguments=[
        "--config_path", e.preprocess_config_path,
        "--task", e.preprocess_task,
    ],
    inputs=None,
    compute_target=aml_compute,
    runconfig=run_config,
    source_directory=e.sources_directory,
    allow_reuse=False
)
print("Step Preprocessing created")

这导致错误:

Traceback (most recent call last):
[stderr]  File "Pipeline/custom_pipeline.py", line 4, in <module>
[stderr]    from Preprocess.logger import logger
[stderr]ModuleNotFoundError: No module named 'Preprocess'

在输入脚本的第一行(custom_pipeline.py):

import sys
sys.path.append(".") 
from Preprocess.logger import logger

文件夹结构如下:

-Preprocess
  -__init__.py
  - Module1
    -__init__.py
    -somefile.py
  - Module2
    -__init__.py
    -someOtherfile.py
  - Pipeline
    -__init__.py
    -custom_pipeline.py
  - logger
    -__init__.py
    -logger.py

我发现 python 脚本步骤复制了 source_dir 中的所有内容,因此在我的例子中它复制的是模块而不是根文件夹。所以我不得不将目录 Preprocess 放在另一个目录中,并将新目录称为 source_dir.