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

使用DummyVecEnv封装自定义Gymnasium环境时check_env报错原因

问题:Gymnasium自定义环境用DummyVecEnv封装后check_env报错

我使用Gymnasium(版本:0.28.1)和Stable Baselines3(版本:2.0.0)创建了继承自gymnasium.Env的自定义环境GridWorldEnv,直接调用check_env()时无报错,但用DummyVecEnv封装环境后运行以下代码:

from stable_baselines3.common.vec_env import DummyVecEnv
from stable_baselines3.common.env_checker import check_env

env = gymnasium.make('gym_examples/GridWorld-v0')
env = DummyVecEnv([lambda: env])
check_env(env)

出现错误提示:Gym custom environment expects to be inherited from gym.Env but it is being inherited

报错原因分析

  • 版本适配问题:Stable Baselines3 2.0.0的check_env工具未完全适配Gymnasium的环境体系,它的校验逻辑默认检查环境是否继承自旧版gym.Env,但你的环境继承的是gymnasium.Env,导致工具误判继承关系。
  • 校验对象类型错误:check_env的作用是校验原生Gym/Gymnasium环境,而DummyVecEnv封装后得到的是向量环境(VecEnv),并非原生环境类型,check_env不支持直接对向量环境做校验。
  • 封装写法隐患:你在DummyVecEnv的lambda函数里直接返回了同一个已实例化的环境对象,正确写法应该让lambda每次返回新的环境实例(比如DummyVecEnv([lambda: gymnasium.make('gym_examples/GridWorld-v0')])),不过这不是本次报错的直接原因,但会导致后续训练时多个环境共享同一状态的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:37:50