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.
我开发了一个在本地执行时完美运行的模块。
我使用此处找到的预建 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.