使用Stable Baselines3时自定义Gym环境已继承gym.Env仍报错求助
解决自定义Gym环境继承gym.Env仍触发AssertionError的问题
核心原因
Stable Baselines3 2.0.0a5版本开始默认适配Gymnasium(原OpenAI Gym的官方维护分支),而你当前使用的是旧版OpenAI Gym的gym.Env类,导致SB3的check_env函数无法识别环境的继承关系,触发断言错误。
解决方法
方法1:切换到Gymnasium(推荐)
- 安装Gymnasium
pip install gymnasium
- 修改环境类的导入与继承代码
import gymnasium as gym class v1(gym.Env): """GYM functions""" def __init__(self): super().__init__() # 你的环境实现代码
- 保持原调用代码不变,重新运行即可。
方法2:适配旧版OpenAI Gym(不推荐)
如果你必须使用旧版OpenAI Gym,需要确保SB3与Gym版本兼容:
- 安装与SB3 2.0.0a5兼容的旧版Gym
pip install gym==0.26.2
- 验证环境继承关系,添加调试代码确认:
gym_env = v1() print(isinstance(gym_env, gym.Env)) # 应返回True check_env(gym_env)
如果返回False,说明存在多个Gym版本冲突,执行以下命令清理后重新安装:
pip uninstall -y gym gymnasium pip install gym==0.26.2
方法3:检查类继承的正确性
确保你的环境类正确调用了父类的初始化方法,且没有导入错误的gym模块。可以打印类的继承链确认:
print(v1.__mro__)
输出应包含<class 'gym.core.Env'>(旧版Gym)或<class 'gymnasium.core.Env'>(Gymnasium)。
内容的提问来源于stack exchange,提问作者user21848941
相关产品推荐
相关产品推荐

