使用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上下文在对象回收时的异常,和渲染窗口的生命周期管理直接相关,可尝试以下方案:
手动控制环境生命周期
在代码中添加窗口停留和手动关闭环境的逻辑,避免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()更新GLFW库版本
当前GLFW版本可能存在兼容性问题,执行命令更新:pip install --upgrade glfw调整渲染模式
若无需可视化窗口,可改用rgb_array模式替代human:env = gym.make('Humanoid-v4', render_mode='rgb_array')Windows环境下若需可视化,优先尝试更新GLFW;Linux/macOS可尝试切换MuJoCo渲染后端,设置环境变量
MUJOCO_GL=egl或MUJOCO_GL=osmesa。匹配依赖版本
确保gymnasium、MuJoCo、stable-baselines3版本兼容,可安装指定稳定版本组合:pip install gymnasium[mujoco]==0.29.1 mujoco==2.3.7 stable-baselines3==2.0.0
内容的提问来源于stack exchange,提问作者Vaikruta
相关产品推荐
相关产品推荐

