You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python导入rl库失败报错ModuleNotFoundError的解决咨询

解决rl库导入时ModuleNotFoundError: No module named 'keras.utils.generic_utils'的问题

问题原因

你使用的rl库(大概率是旧版keras-rl)基于独立版Keras开发,但当前项目采用TensorFlow集成的Keras(tensorflow.keras),两者模块路径不匹配,导致rl库无法找到旧版Keras的keras.utils.generic_utils模块。

解决方法

方法1:安装适配TensorFlow 2.x的rl库(推荐)

旧版keras-rl已停止维护,改用适配TensorFlow 2.x的keras-rl2:

  1. 卸载旧的rl库:
pip uninstall rl
  1. 安装keras-rl2:
pip install keras-rl2
  1. 导入语句无需修改,keras-rl2兼容原有写法,同时建议简化TensorFlow导入路径(更规范):
# 替换原TensorFlow导入为标准写法
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.utils import generic_utils

# rl库导入保持不变
from rl.agents.dqn import DQNAgent
from rl.policy import BoltzmannQPolicy 
from rl.memory import SequentialMemory 

方法2:修改rl库源码(临时修复)

找到报错的callbacks.py文件(路径:/opt/homebrew/lib/python3.11/site-packages/rl/callbacks.py),将第12行的:

from keras.utils.generic_utils import Progbar

修改为和项目一致的TensorFlow Keras导入路径:

from tensorflow.python.keras.utils.generic_utils import Progbar

方法3:添加模块别名(无需修改源码)

在项目代码最顶部添加以下代码,为rl库创建兼容的模块别名:

import sys
from tensorflow.python.keras.utils import generic_utils
sys.modules['keras.utils.generic_utils'] = generic_utils

# 后续库导入语句保持不变
from tensorflow.python.keras.engine import keras_tensor
...
from rl.agents.dqn import DQNAgent

内容的提问来源于stack exchange,提问作者Alessia Volpi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 16:33:24