创建gym_super_mario_bros环境时遭遇KeyError: 'render_modes'问题求助
解决gym_super_mario_bros中的KeyError: 'render_modes'问题
问题背景
跟随《Build an Mario AI Model with Python | Gaming Reinforcement Learning》教程时,执行env = gym_super_mario_bros.make('SuperMarioBros-v0')触发KeyError: 'render_modes'错误,错误栈指向Gym的环境注册模块尝试读取环境元数据中的render_modes字段失败。已尝试切换Python 3.7/3.9版本并重装依赖,问题未解决。
问题原因
gym_super_mario_bros==7.3.0是为Gym 0.25.x及以下版本开发的,而当前环境中安装的是Gym 0.26+版本。Gym 0.26+引入了强制的环境元数据检查,要求所有环境必须包含render_modes字段,但旧版gym_super_mario_bros未适配该要求,导致触发KeyError。
解决方案
方案1:安装兼容的Gym版本(推荐)
卸载当前Gym版本,安装与gym_super_mario_bros==7.3.0兼容的0.25.2版本:
pip uninstall gym -y pip install gym==0.25.2
也可以直接一次性安装所有兼容依赖:
pip install gym_super_mario_bros==7.3.0 nes_py gym==0.25.2
方案2:绕过Gym环境检查
如果不想调整Gym版本,可以在创建环境时添加disable_env_checker=True参数,跳过Gym的元数据检查:
# Setup game env = gym_super_mario_bros.make('SuperMarioBros-v0', disable_env_checker=True) env = JoypadSpace(env, SIMPLE_MOVEMENT)
内容的提问来源于stack exchange,提问作者Crayec
相关产品推荐
相关产品推荐

