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

使用gym ConnectFour环境时遇ImportError:无法导入load_model

解决gym ConnectFour环境中的ImportError: cannot import name 'load_model'问题

问题重现

运行以下gym ConnectFour示例代码时触发ImportError:

import gym
from gym_connect_four import RandomPlayer, ConnectFourEnv
env: ConnectFourEnv = gym.make("ConnectFour-v0")

player1 = RandomPlayer(env, 'Dexter-Bot')
player2 = RandomPlayer(env, 'Deedee-Bot')
result = env.run(player1, player2, render=True)
reward = result.value
print(reward)

错误信息

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_14304\94530224.py in <module>
      1 import gym
----> 2 from gym_connect_four import RandomPlayer, ConnectFourEnv
      3 env: ConnectFourEnv = gym.make("ConnectFour-v0")
      4 
      5 player1 = RandomPlayer(env, 'Dexter-Bot')

c:\Users\Axel\Documents\_ReinforcementJourney\Connect4\gym-connect-four\gym_connect_four\__init__.py in <module>
      1 from gym.envs.registration import register
----> 2 from .envs.connect_four_env import ConnectFourEnv, Player, RandomPlayer, SavedPlayer, ResultType
      3 
      4 register(
      5     id='ConnectFour-v0',

c:\Users\Axel\Documents\_ReinforcementJourney\Connect4\gym-connect-four\gym_connect_four\envs\__init__.py in <module>
----> 1 from gym_connect_four.envs.connect_four_env import ConnectFourEnv, Player, RandomPlayer, SavedPlayer, ResultType

c:\Users\Axel\Documents\_ReinforcementJourney\Connect4\gym-connect-four\gym_connect_four\envs\connect_four_env.py in <module>
     11 from gym import error
     12 from gym import spaces
---> 13 from keras.engine.saving import load_model
     14 
     15 from gym_connect_four.envs.render import render_board

ImportError: cannot import name 'load_model' from 'keras.engine.saving'

已尝试但无效的方法

  • 执行conda update --all更新所有包;
  • 卸载并重新安装tensorflow;
  • 修改connect_four_env.py中的导入语句为from tensorflow.python.keras.engine.saving import load_model。

可行解决方案

方案1:修正load_model的导入路径

将connect_four_env.py第13行的导入语句替换为:

from tensorflow.keras.models import load_model

原因:新版本TensorFlow中,Keras已被整合,load_model的官方标准导入路径是tensorflow.keras.models,旧的keras.engine.saving路径已被废弃移除。

方案2:安装兼容的TensorFlow版本

如果不想修改代码,可以安装与该gym-connect-four包兼容的旧版TensorFlow(如2.3.x或2.4.x),这类版本仍保留keras.engine.saving路径:

# 使用conda安装
conda install tensorflow=2.3.0

# 或使用pip安装
pip install tensorflow==2.3.0

方案3:注释无用的相关代码(临时方案)

如果不需要使用SavedPlayer类,可直接注释掉相关代码绕过错误:

  1. 注释connect_four_env.py第13行的导入语句:# from keras.engine.saving import load_model
  2. 找到文件中SavedPlayer类的定义及所有调用该类的代码,全部注释。

内容的提问来源于stack exchange,提问作者Axel P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:15:51