我复现论文时拉取了容器在本地VSCode运行,运行前先执行xhost +该命令行即可出现图形显示界面,但是在同样的步骤在cursor中同样实现了启动了X11和容器,但无法运行脚本,更没有办法显示图形界面,出现的报错为:

GLFWError: (65550) b'X11: The DISPLAY environment variable is missing'
  warnings.warn(message, GLFWError)
/usr/local/lib/python3.8/dist-packages/glfw/__init__.py:917: GLFWError: (65537) b'The GLFW library is not initialized'
  warnings.warn(message, GLFWError)
python: /builds/florianrhiem/pyGLFW/glfw-3.4/src/monitor.c:449: glfwGetVideoMode: Assertion monitor != NULL' failed.
Aborted (core dumped)

为什么同样的步骤在VSCode和cursor中是不同的呢?原因在于

在 VSCode 中,尤其是你使用了 “Remote Containers” 插件或 Docker 插件打开容器时:

  • VSCode 会自动传递主机的 DISPLAY 变量

  • VSCode 会自动挂载 /tmp/.X11-unix

  • VSCode 还会配置一些容器权限,允许 root 用户使用图形界面(xhost +local:root

但是Cursor 本质是一个 IDE(和 VSCode 不同),它:

  • 没有自动配置图形显示环境

  • 容器运行没有绑定主机的 X11 套接字

  • 没有自动传入 DISPLAY 环境变量

  • 你运行 train.py 时容器中无法访问图形驱动,导致 GLFW 初始化失败

解决办法:

重新创建一个容器

docker run -it \
  --env DISPLAY=$DISPLAY \
  --volume /tmp/.X11-unix:/tmp/.X11-unix \
  --name container_name \
  image_name \
  bash

在命令行中将容器绑定主机的X11,传入DISPLAY环境变量即可。

除了创建新容器没有找到其他的解决办法。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐