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

使用Gymnasium与MuJoCo训练强化学习智能体时遇glfw属性错误

问题描述

正在进行强化学习实践,使用gymnasium搭配MuJoCo训练智能体,MuJoCo已完成安装,但运行代码时仿真窗口仅打开1秒就抛出错误,print(obs)能正常输出张量,仅渲染环节出现问题。

运行代码

import gymnasium as gym
import stable_baselines3
import imageio


env=gym.make('Humanoid-v4', render_mode='human')
obs=env.reset()
env.render()
print(obs)

错误回溯

Traceback (most recent call last):
  File "C:\Users\krish\anaconda3\envs\learn\lib\site-packages\gymnasium\envs\mujoco\mujoco_rendering.py", line 337, in __del__
  File "C:\Users\krish\anaconda3\envs\learn\lib\site-packages\gymnasium\envs\mujoco\mujoco_rendering.py", line 330, in free
  File "C:\Users\krish\anaconda3\envs\learn\lib\site-packages\glfw\__init__.py", line 2358, in get_current_context
AttributeError: 'NoneType' object has no attribute 'glfwGetCurrentContext'

解决思路

这个错误源于GLFW上下文在对象回收时的异常,和渲染窗口的生命周期管理直接相关,可尝试以下方案:

  1. 手动控制环境生命周期
    在代码中添加窗口停留和手动关闭环境的逻辑,避免Python自动回收对象时触发错误:

    import gymnasium as gym
    import stable_baselines3
    import imageio
    import time
    
    env = gym.make('Humanoid-v4', render_mode='human')
    obs = env.reset()
    env.render()
    # 停留5秒观察窗口
    time.sleep(5)
    print(obs)
    # 手动关闭环境
    env.close()
    
  2. 更新GLFW库版本
    当前GLFW版本可能存在兼容性问题,执行命令更新:

    pip install --upgrade glfw
    
  3. 调整渲染模式
    若无需可视化窗口,可改用rgb_array模式替代human:

    env = gym.make('Humanoid-v4', render_mode='rgb_array')
    

    Windows环境下若需可视化,优先尝试更新GLFW;Linux/macOS可尝试切换MuJoCo渲染后端,设置环境变量MUJOCO_GL=egl或MUJOCO_GL=osmesa。

  4. 匹配依赖版本
    确保gymnasium、MuJoCo、stable-baselines3版本兼容,可安装指定稳定版本组合:

    pip install gymnasium[mujoco]==0.29.1 mujoco==2.3.7 stable-baselines3==2.0.0
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:30:54