已开启
[24.03 LTS SP1][x86/RISC-V] ModuleNotFoundError: No module named 'keras.saving.legacy' #6
peeweep创建于  2025年4月25日
peeweep
2025年4月25日 创建

【环境信息】
OS 版本: 24.03 LTS SP1
架构: x86 、 riscv64
python3-Keras 版本: 2.12.0-1.oe2403sp1
python3-tensorflow 版本: 2.12.1-2.oe2403sp1

【问题复现步骤】

在 24.03 LTS SP1 版本中执行以下操作,在 x86 和 riscv64 架构的镜像中都可以复现

运行 https://gitee.com/openeuler/mugen/tree/master/testcases/cli-test/python-Keras/oe_test_Keras 目录下 Keras_1.py

sudo yum install python3-tensorflow python3-Keras
python3 ./Keras_1.py

打印 keras 版本号也可以复现

python3 -c "import tensorflow as tf; print(tf.keras.__version__)"

【实际结果】
报错 ModuleNotFoundError: No module named 'keras.saving.legacy'

[root@localhost oe_test_Keras]# python3 Keras_1.py
Traceback (most recent call last):
  File "/root/mugen/testcases/cli-test/python-Keras/oe_test_Keras/Keras_1.py", line 2, in <module>
    from keras.models import Model
  File "/usr/lib/python3.11/site-packages/keras/__init__.py", line 21, in <module>
    from keras import models
  File "/usr/lib/python3.11/site-packages/keras/models/__init__.py", line 18, in <module>
    from keras.engine.functional import Functional
  File "/usr/lib/python3.11/site-packages/keras/engine/functional.py", line 26, in <module>
    from keras import backend
  File "/usr/lib/python3.11/site-packages/keras/backend.py", line 35, in <module>
    from keras.engine import keras_tensor
  File "/usr/lib/python3.11/site-packages/keras/engine/keras_tensor.py", line 19, in <module>
    from keras.utils import object_identity
  File "/usr/lib/python3.11/site-packages/keras/utils/__init__.py", line 20, in <module>
    from keras.saving.legacy.serialization import deserialize_keras_object
ModuleNotFoundError: No module named 'keras.saving.legacy'

二、缺陷分析结构反馈
影响性分析说明:

缺陷严重等级:(Critical/High/Moderate/Low)

缺陷根因说明:

受影响版本排查(受影响/不受影响):
openEuler-20.03-LTS-SP4
openEuler-22.03-LTS-SP3
openEuler-22.03-LTS-SP4
openEuler-24.03-LTS
openEuler-24.03-LTS-SP1

修复是否涉及abi变化(是/否):
openEuler-20.03-LTS-SP4
openEuler-22.03-LTS-SP3
openEuler-22.03-LTS-SP4
openEuler-24.03-LTS
openEuler-24.03-LTS-SP1

likedislike
Ppeeweep
2025年4月25日 创建了缺陷
2025年4月25日 评论:

Hi peeweep, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: A-Tune, and any of the maintainers: @pshysimon , @chendh6 , @hubin95 , @yangyongguang , @Vchanger , @znzjugod

likedislike
openeuler-ci-botopeneuler-ci-bot成员
2025年4月25日 修改了描述
openeuler-ci-botopeneuler-ci-bot成员
2025年4月25日 将负责人设置为chendh6
openeuler-ci-botopeneuler-ci-bot成员
2025年4月25日 添加了 &nbsp; sig/A-Tune 标签
2025年4月25日 评论:

@chendh6 , @hubin95 , @yangyongguang , @Vchanger , @znzjugod , @pshysimon
以下的要求不是强制性的, 未按模板评论时对issue无任何影响
issue处理注意事项:
1. 当前issue受影响的分支提交pr时, 须在pr描述中填写当前issue编号进行关联, 否则无法关闭当前issue;
2. 模板内容需要填写完整, 无论是受影响或者不受影响都需要填写完整内容,未引入的分支不需要填写, 否则无法关闭当前issue;
3. 以下为模板中需要填写完整的内容, 请复制到评论区回复, 注: 内容的标题名称(影响性分析说明, 缺陷严重等级, 受影响版本排查(受影响/不受影响), 修复是否涉及abi变化(是/否))不能省略,省略后defect-manager将无法正常解析填写内容.
评论区可能使用到的指令说明:

指令 指令说明 使用权限
/check-issue 触发defect-manager校验 不限
/reason xxx /reason +挂起或取消条件 不限

影响性分析说明:

缺陷严重等级:(Critical/High/Moderate/Low)

缺陷根因说明:

受影响版本排查(受影响/不受影响):

  1. openEuler-20.03-LTS-SP4:
  2. openEuler-22.03-LTS-SP3:
  3. openEuler-22.03-LTS-SP4:
  4. openEuler-24.03-LTS:
  5. openEuler-24.03-LTS-SP1:

abi变化(是/否):

  1. openEuler-20.03-LTS-SP4:
  2. openEuler-22.03-LTS-SP3:
  3. openEuler-22.03-LTS-SP4:
  4. openEuler-24.03-LTS:
  5. openEuler-24.03-LTS-SP1:

缺陷issue处理具体操作请参考:
https://gitee.com/Coopermassaki/cve-manager/blob/master/cve-vulner-manager/doc/md/defect-manager-manual.md
pr关联issue具体操作请参考:
https://gitee.com/help/articles/4142

likedislike
openeuler-ci-botopeneuler-ci-bot成员
2025年4月25日 添加了 &nbsp; DEFECT/UNFIXED 标签
openeuler-ci-botopeneuler-ci-bot成员
2025年4月25日 将计划开始日期设置为2025-04-25
openeuler-ci-botopeneuler-ci-bot成员
2025年4月25日 将计划截止日期设置为2025-05-25
Ppeeweep
2025年4月29日 修改了描述
Ppeeweep
2025年4月29日 修改了标题
2025年5月10日 评论:

原因:
从Keras 2.4.0版本开始,官方移除了Keras对legacy(多后端兼容层)模块的支持,并将Keras集成到TensorFlow中。
参考链接:https://github.com/keras-team/keras/releases/tag/2.4.0
解决方法:
1.安装官方的TensorFlow
不能使用yum install python3-tensorflow安装,openeuler镜像源提供的rpm包缺少tensorflow.keras所需的依赖。
执行命令如下:
python3 -m venv ~/venv-tf
source ~/venv-tf/bin/activate
pip install --upgrade pip
pip install tensorflow
2.修改测试脚本中keras的导入方法
将 from keras.models import Model 改为 from tensorflow.keras.models import Model
3.脚本执行
python3 Keras_1.py
输入图片说明
@peeweep

likedislike
peeweep
2025年5月10日 评论:

原因:
从Keras 2.4.0版本开始,官方移除了Keras对legacy(多后端兼容层)模块的支持,并将Keras集成到TensorFlow中。
参考链接:https://github.com/keras-team/keras/releases/tag/2.4.0
解决方法:
1.安装官方的TensorFlow
不能使用yum install python3-tensorflow安装,openeuler镜像源提供的rpm包缺少tensorflow.keras所需的依赖。
执行命令如下:
python3 -m venv ~/venv-tf
source ~/venv-tf/bin/activate
pip install --upgrade pip
pip install tensorflow
2.修改测试脚本中keras的导入方法
将 from keras.models import Model 改为 from tensorflow.keras.models import Model
3.脚本执行
python3 Keras_1.py
输入图片说明
@peeweep

# pip install tensorflow
ERROR: Could not find a version that satisfies the requirement tensorflow (from versions: none)
ERROR: No matching distribution found for tensorflow

@boluo56 在 riscv64 架构上无法用 pip install tensorflow 安装 tensorflow,只能用 yum 安装。可否将 tensorflow.keras 所需的依赖集成到 python-tensorflow 或 python-Keras rpm 中?

likedislike
2025年5月13日 评论:

原因:
从Keras 2.4.0版本开始,官方移除了Keras对legacy(多后端兼容层)模块的支持,并将Keras集成到TensorFlow中。
参考链接:https://github.com/keras-team/keras/releases/tag/2.4.0
解决方法:
1.安装官方的TensorFlow
不能使用yum install python3-tensorflow安装,openeuler镜像源提供的rpm包缺少tensorflow.keras所需的依赖。
执行命令如下:
python3 -m venv ~/venv-tf
source ~/venv-tf/bin/activate
pip install --upgrade pip
pip install tensorflow
2.修改测试脚本中keras的导入方法
将 from keras.models import Model 改为 from tensorflow.keras.models import Model
3.脚本执行
python3 Keras_1.py
输入图片说明
@peeweep

我们只负责aarch架构和X86架构哈,riscv64架构我们不维护

likedislike
2025年5月13日 评论:

原因:
从Keras 2.4.0版本开始,官方移除了Keras对legacy(多后端兼容层)模块的支持,并将Keras集成到TensorFlow中。
参考链接:https://github.com/keras-team/keras/releases/tag/2.4.0
解决方法:
1.安装官方的TensorFlow
不能使用yum install python3-tensorflow安装,openeuler镜像源提供的rpm包缺少tensorflow.keras所需的依赖。
执行命令如下:
python3 -m venv ~/venv-tf
source ~/venv-tf/bin/activate
pip install --upgrade pip
pip install tensorflow
2.修改测试脚本中keras的导入方法
将 from keras.models import Model 改为 from tensorflow.keras.models import Model
3.脚本执行
python3 Keras_1.py
输入图片说明
@peeweep

tensorflow的依赖集成是tensorflow软件包owner负责的

likedislike
2025年5月14日 评论:

原因:
从Keras 2.4.0版本开始,官方移除了Keras对legacy(多后端兼容层)模块的支持,并将Keras集成到TensorFlow中。
参考链接:https://github.com/keras-team/keras/releases/tag/2.4.0
解决方法:
1.安装官方的TensorFlow
不能使用yum install python3-tensorflow安装,openeuler镜像源提供的rpm包缺少tensorflow.keras所需的依赖。
执行命令如下:
python3 -m venv ~/venv-tf
source ~/venv-tf/bin/activate
pip install --upgrade pip
pip install tensorflow
2.修改测试脚本中keras的导入方法
将 from keras.models import Model 改为 from tensorflow.keras.models import Model
3.脚本执行
python3 Keras_1.py
输入图片说明
@peeweep

tensorflow的issue链接:https://gitee.com/src-openeuler/tensorflow/issues/IC7AGA?from=project-issue

likedislike
2025年5月14日 评论:

/assign

likedislike
openeuler-ci-botopeneuler-ci-bot成员
2025年5月14日 将负责人从 chendh6 修改为jinsaihang
Bboluo56
2025年5月14日 将状态从 待办的 修改为已挂起
openeuler-ci-botopeneuler-ci-bot成员
2025年5月14日 将状态从 已挂起 修改为待办的
2025年5月14日 评论:

@boluo56
issue变更为 [已取消/已挂起] 状态前,请操作者填写相关原因
请按如下格式评论原因后,重新进行操作


/reason xxxxxx

likedislike
2025年5月14日 评论:

/reason 已在tensorflow仓库建立issue跟踪:https://gitee.com/src-openeuler/tensorflow/issues/IC7AGA?from=project-issue

likedislike
Bboluo56
2025年5月14日 将状态从 待办的 修改为已挂起
2025年5月14日 评论:

@boluo56 当前issue状态为: 已挂起,若要追加评论,请先修改issue状态,否则评论无法被识别.

likedislike
2025年5月14日 评论:
issue状态 操作者 原因
已挂起 boluo56 已在tensorflow仓库建立issue跟踪:https://gitee.com/src-openeuler/tensorflow/issues/IC7AGA?from=project-issue
likedislike
openeuler-ci-botopeneuler-ci-bot成员
2025年5月14日 移除了 &nbsp; DEFECT/UNFIXED 标签