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

gym.wrappers.Monitor()废弃后的替代方法与报错解决方案

gym废弃wrappers.Monitor接口替代方案

问题背景

示例来自Miguel Morales所著《Grokking Deep Reinforcement Learning》第8章,原书代码使用的wrappers.Monitor接口在新版gym中已被废弃,原代码逻辑如下:

env = wrappers.Monitor(
        env, mdir, force=True, 
        mode=monitor_mode, 
        video_callable=lambda e_idx: record) if monitor_mode else env

实测网上流传的两种替代方案均存在报错:

  • gnwrapper.Monitor方案:安装gym-notebook-wrapper依赖、导入gnwrapper后将代码改写为
    env = gnwrapper.Monitor(gym.make(env_name),directory="./") 
    
    运行后抛出[WinError 2] The system cannot find the file specified错误
  • gym原生RecordVideo方案:从gym.wrappers导入RecordVideo后将代码改写为
    env = RecordVideo(gym.make(env_name), "./")
    
    运行CartPole环境时抛出AttributeError: 'CartPoleEnv' object has no attribute 'videos'属性错误

报错修复与正确实现

方案一:修复gnwrapper.Monitor报错

[WinError 2]报错的核心原因是系统缺少ffmpeg依赖,gnwrapper依赖ffmpeg完成视频编码,Windows系统默认没有预装该组件:

  • 下载ffmpeg Windows预编译包,解压后将包内bin目录的路径添加到系统环境变量Path
  • 重启Python运行环境后重新执行代码即可正常录制,该方案更适合在Jupyter Notebook中内联展示录制视频的场景

方案二:修复gym原生RecordVideo报错(更推荐,无额外依赖)

'CartPoleEnv' object has no attribute 'videos'是gym版本兼容问题:0.26及之后版本的gym要求录制视频的环境必须指定render_mode="rgb_array",直接传入裸环境会缺失录制所需的内置属性,正确写法完全对齐原Monitor的功能:

import gym
from gym.wrappers import RecordVideo

# 初始化环境时必须指定render_mode为rgb_array,这是视频录制的前置要求
env = gym.make(env_name, render_mode="rgb_array")
# 封装录制 wrapper
env = RecordVideo(
    env,
    video_folder="./videos",  # 建议指定专门的视频存储目录,避免根目录权限问题
    episode_trigger=lambda e_idx: record,  # 与原代码video_callable逻辑完全一致,入参是回合序号,返回True则录制当前回合
    force=True  # 对齐原Monitor的force参数,允许覆盖目录下已有的同名录制文件
)

注意:如果使用的是0.25及更早版本的gym,不需要给gym.make传render_mode参数,只需要在封装RecordVideo前手动给环境补全缺失的属性即可兼容:

env = gym.make(env_name)
env.videos = []  # 补全老版本缺失的内置属性
env = RecordVideo(
    env,
    video_folder="./videos",
    episode_trigger=lambda e_idx: record,
    force=True
)

如果需要对齐原Monitor的mode参数逻辑,直接修改episode_trigger的判断规则即可:比如训练阶段每100回合录制一次、评估阶段全量录制,直接在lambda表达式中写入对应判断条件就行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:33:25