Gym env.render() 内核崩溃

问题描述 投票:0回答:2

我有一个带有 python 3.10.6 和gym==0.26.0 的 conda 环境

我在 vscode 中打开一个新的 ipynb 并运行

import gym
env = gym.make('CarRacing-v2') # i tried more envs from classic control and box2d and all have the same issue

现在当我运行它时,它可以工作并且所有 3 个数字都被打印出来

observation = env.reset()
for _ in range(100):
    print(-1)
    state, reward, terminated, _, info = env.step(env.action_space.sample())
    print(0)
    # env.render()
    print(1)

但是当我取消注释 env.render() 时,内核崩溃并显示以下消息:

在当前单元格或上一个单元格中执行代码时内核崩溃。请检查单元格中的代码以确定失败的可能原因。点击这里查看更多信息。查看 Jupyter 日志以获取更多详细信息。 在回复完成之前取消了未来的execute_request消息

看起来像是环境渲染的问题。我尝试重新安装gym及其所有依赖项,但没有帮助。我尝试制作一个新的 conda 环境并在那里安装健身房,但遇到同样的问题......

我尝试制作一个普通的 .py 文件,但发生了这种情况

import gym
env = gym.make("CarRacing-v2", render_mode="human")
observation, info = env.reset()

当我运行这个时,我收到此错误

libGL error: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri) libGL error: failed to load driver: iris libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri) libGL error: failed to load driver: swrast X Error of failed request:  BadValue (integer parameter out of range for operation) Major opcode of failed request:  149 (GLX) Minor opcode of failed request:  3 (X_GLXCreateContext) Value in failed request:  0x0 Serial number of failed request:  101 Current serial number in output stream:  102

但是当我删除 render_mode 时,没有错误。当我让 render_mode 作为人类但删除 env.reset() 时,也没有错误。

有什么想法吗?

python crash render openai-gym
2个回答
1
投票

我也遇到了你的问题,我做了这些步骤,它对我有用。 首先我更新我的 vs-code IDE

sudo apt update
sudo apt install code

之后,我删除了健身房库并使用 pip 安装了 gym=0.21。我不知道为什么,但这个版本可以正常工作。

pip install gym==0.21

注意:如果你没有pip,可以按照这个链接安装。

然后使用 ctrl+shift+p 按钮和 重新加载窗口 重新打开我的 IDE,并再次运行单元格,这次 env.render() 起作用了。


0
投票

这对于在无头服务器上使用旧版本的 openaigym 来说很常见。解决方案很简单。我只用我的 OpenGL 后端 = osmesa 测试了它。但我认为它也适用于 EGL。不管怎样,你可以随时切换到 osmesa。

基本上,在Ubuntu22.04中,你会在

swrast_dri.so
中有一个
/usr/lib/x86_64-linux-gnu/dri/
。所以我们可以创建一个符号链接到它:

sudo mkdir /usr/lib/dri
sudo ln -s /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so /usr/lib/dri/swrast_dri.so

这是为了

swrast_dri.so
。对于
iris_dri.so
,我想解决方案是相同的。我的解决方案是从这里复制的:https://forum.step.esa.int/t/snap9-error-libegl-warning-mesa-loader-failed-to-open-swrast/36702/5

© www.soinside.com 2019 - 2024. All rights reserved.