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

如何在Google Colab中为Godot设置LIBGL_ALWAYS_SOFTWARE=1

在Google Colab中解决Avalon基准测试的Godot OpenGL初始化错误

问题场景

在Google Colab笔记本中使用Avalon基准测试初始化AvalonEnv时,触发Godot Engine的OpenGL初始化错误,提示需设置LIBGL_ALWAYS_SOFTWARE=1启用软件渲染。尝试通过os.environ设置该环境变量后,错误仍未解决。

运行代码如下:

!git clone https://github.com/Avalon-Benchmark/avalon.git

!pip install avalon-rl==1.0.0

!python -m avalon.install_godot_binary

import pathlib as pathlib
import shutil

from avalon.agent.godot.godot_gym import AvalonEnv
from avalon.agent.godot.godot_gym import GodotEnvironmentParams
from avalon.agent.godot.godot_gym import TrainingProtocolChoice
from avalon.datagen.env_helper import display_video
from avalon.datagen.world_creation.constants import AvalonTask
from avalon.datagen.world_creation.world_generator import GenerateAvalonWorldParams
from avalon.datagen.world_creation.world_generator import generate_world

env_params = GodotEnvironmentParams(
    resolution=256,
    training_protocol=TrainingProtocolChoice.SINGLE_TASK_FIGHT,
    initial_difficulty=0,
)
env = AvalonEnv(env_params)

错误信息(翻译后)

Godot Engine v3.4.4.stable.avalon.e462a8744 https://godotengine.org
错误:在is_viable处初始化GLAD失败(drivers/gles3/rasterizer_gles3.cpp:141)
你的显卡驱动不支持任何兼容的OpenGL版本,请更新驱动;如果是老旧或集成GPU,请升级硬件。或者,你可以通过设置环境变量LIBGL_ALWAYS_SOFTWARE=1来强制启用软件渲染,但这会非常慢。

无效原因分析

你尝试的代码:

import os
os.environ['LIBGL_ALWAYS_SOFTWARE']='1'
!export | grep LIBGL_ALWAYS_SOFTWARE

无法生效的核心原因是:

  • os.environ仅设置当前Python进程的环境变量,而Colab中!开头的命令会在独立的子shell中执行,子shell无法继承Python进程的环境变量。
  • !export是在子shell中临时设置变量,该变量仅对当前子shell有效,后续启动的Godot进程(可能在另一个子shell或Python调用的子进程中)无法获取。

正确解决方法

方法1:使用Colab魔法命令全局设置环境变量

在所有代码前执行%env魔法命令,该设置会对后续所有!命令和Python子进程生效:

%env LIBGL_ALWAYS_SOFTWARE=1

之后再运行你的克隆、安装和初始化代码即可。

方法2:在调用Godot相关命令前前缀环境变量

针对需要启动Godot的命令,直接在命令前添加环境变量设置,确保启动的进程能获取到:

# 安装Godot二进制时指定
!LIBGL_ALWAYS_SOFTWARE=1 python -m avalon.install_godot_binary

同时,在Python代码中初始化AvalonEnv前,确保Python进程的环境变量已设置:

import os
os.environ['LIBGL_ALWAYS_SOFTWARE'] = '1'

# 随后初始化Env
env_params = GodotEnvironmentParams(...)
env = AvalonEnv(env_params)

方法3:一次性设置全局shell环境变量

通过!echo将变量写入Colab的shell配置文件,确保所有子shell启动时自动加载:

!echo "export LIBGL_ALWAYS_SOFTWARE=1" >> ~/.bashrc
!source ~/.bashrc

执行后,后续所有!命令都会自动携带该环境变量。

验证设置是否生效

执行以下命令确认环境变量已正确设置:

!echo $LIBGL_ALWAYS_SOFTWARE

输出1则表示设置成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:19:56