我有一个带有 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() 时,也没有错误。
有什么想法吗?
我也遇到了你的问题,我做了这些步骤,它对我有用。 首先我更新我的 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() 起作用了。
这对于在无头服务器上使用旧版本的 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