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

Jupyter Notebook调用gym env.render()时内核崩溃求助

Jupyter中Gym render_mode='rgb_array'导致Python3.7崩溃的解决方法

问题背景

在Jupyter Notebook里运行Gym环境渲染代码时,只要指定render_mode='rgb_array',就会触发Python 3.7崩溃,内核直接挂掉。去掉这个参数程序能正常运行,但没法获取渲染的RGB数组,不是合理解决办法。已经尝试重装ipykernel、ipython、jupyter_client等相关包,问题依旧存在。

用到的代码:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import time
import gym
from gym.envs.registration import register
from IPython.display import clear_output

try:
    register(
        id='FrozenLakeNotSlippery-v0', #Name this whatever you want
        entry_point='gym.envs.toy_text:FrozenLakeEnv',
        kwargs={'map_name' : '4x4', 'is_slippery': False},
        max_episode_steps=100,
        reward_threshold=0.78, # optimum = .8196
    ) 
except: 
    print("Already Registered")
    
env = gym.make("FrozenLakeNotSlippery-v0",render_mode='rgb_array')
env.reset()
for step in range(5):
    env.render()
    action = env.action_space.sample()
    observation, reward, terminated, truncated, info = env.step(action)
    time.sleep(0.5)
    print(observation)
    clear_output(wait=True)
    if terminated:
        env.reset()
    
env.close()    

可行解决办法

  • 手动用Matplotlib渲染RGB数组
    不依赖env.render()的内部渲染逻辑,直接获取它返回的RGB数组,用Matplotlib交互式绘图显示。修改循环部分代码:

    env = gym.make("FrozenLakeNotSlippery-v0", render_mode='rgb_array')
    obs = env.reset()
    plt.ion()  # 开启交互式模式
    fig, ax = plt.subplots()
    img = ax.imshow(env.render())
    
    for step in range(5):
        # 更新图像数据
        img.set_data(env.render())
        fig.canvas.draw()
        fig.canvas.flush_events()
        
        action = env.action_space.sample()
        observation, reward, terminated, truncated, info = env.step(action)
        time.sleep(0.5)
        print(observation)
        clear_output(wait=True)
        
        if terminated:
            obs = env.reset()
    
    plt.ioff()
    env.close()
    
  • 升级Gym或切换到Gymnasium
    旧版Gym在Jupyter环境下的rgb_array渲染存在兼容性bug,试试升级到最新版Gym,或者切换到Gymnasium(Gym的官方维护分支):

    pip install --upgrade gym
    # 或者安装Gymnasium
    pip install gymnasium
    

    切换到Gymnasium后,代码需要微调导入路径和部分API,比如import gymnasium as gym。

  • 升级Python版本
    Python 3.7的兼容性不如新版本,很多用户反馈把Python升到3.8及以上(比如3.9、3.10)后,这个崩溃问题直接消失。

  • 更新渲染相关依赖
    确保pygame、matplotlib这些和渲染有关的包是最新版本,旧版本可能和Gym存在冲突:

    pip install --upgrade pygame matplotlib
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:14:59