华为云AI开发平台ModelArts无法导入模块_云淘科技

问题现象

ModelArts训练作业导入模块时日志报错:

Traceback (most recent call last):File "project_dir/main.py", line 1, in from module_dir import module_file
ImportError: No module named module_dir
ImportError: No module named xxx

原因分析

训练作业导入模块时日志出现前两条报错信息,可能原因如下:

代码如果在本地运行,需要将“project_dir”加入到PYTHONPATH或者将整个“project_dir”安装到“site-package”中才能运行。但是在ModelArts可以将“project_dir”加入到“sys.path”中解决该问题。

使用from module_dir import module_file来导包,代码结构如下:

project_dir
|- main.py
|- module_dir
|  |- __init__.py
|  |- module_file.py

训练作业导入模块时日志出现“ImportError: No module named xxx”的报错,可以判断是环境中没有包含用户依赖的python包。

处理方法

训练作业导入模块时日志出现前两条报错信息,处理方法如下:

首先保证被导入的module中有“__init__.py”存在,创建“module_dir”的“__init__.py”,如原因分析中的结构所示。
由于无法知晓“project_dir”在容器中的位置,所以利用绝对路径,在“main.py”中将“project_dir”添加到“sys.path”中,再导入:

import os
import sys
# __file__为获取当前执行脚本main.py的绝对路径
# os.path.dirname(__file__)获取main.py的父目录,即project_dir的绝对路径
current_path = os.path.dirname(__file__)
sys.path.append(current_path)
# 在sys.path.append执行完毕之后再导入其他模块
from module_dir import module_file

训练作业导入模块时日志出现“ImportError: No module named xxx”的报错,请添加如下代码安装依赖包:

import os
os.system('pip install xxx')

父主题: 云上迁移适配故障

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家