【问题标题】:pygame.error: No available video devicepygame.error: 没有可用的视频设备
【发布时间】:2022-12-31 03:03:29
【问题描述】:

我有这个设置:

 $ python -V
Python 2.7.2+
 $ python -c "import pygame; print pygame.__version__"
1.9.1release

当我运行 pygame 脚本时,出现以下错误:

Traceback (most recent call last):
  File "/home/santosh/tmp/pygameHelloWorld.py", line 8, in <module>
    windowSurface = pygame.display.set_mode((500, 400), 0, 32)
pygame.error: No available video device

我正在使用 Ubuntu 并使用 apt-get 安装了 pygame。此外,我还安装了此 pygame wiki page 中提到的所有依赖项。

【问题讨论】:

  • 请记住,pygame 是在 C 库 SDL 之上构建的,因此您可以通过谷歌搜索与 SDL 相关的错误消息“没有可用的视频设备”来找到一些额外的步骤来尝试。
  • 在设置显示模式之前,我们可以看到 pygameHelloWorld.py 中的一些代码吗?你是先在pygame上调用init吗?
  • 此外,pygame.display 的文档建议不要将深度值传递给 set_mode 函数。我不认为这会导致你的问题,但你试过只调用 pygame.display.set_mode((500,400)) 吗?
  • @Haz pygameHelloWorld.py,这个脚本来自书本用 Python 发明你自己的电脑游戏.所以我在做例子。
  • 正如 Mark 所建议的,我认为这可能是 SDL 而不是 Pygame 的问题。您是否尝试过运行任何其他依赖 libsdl 的应用程序?

标签: python pygame


【解决方案1】:

如果您在 UNIX 系统(例如 Linux 服务器)上运行 Pygame,请尝试使用 DummyVideoDriver

import os
os.environ["SDL_VIDEODRIVER"] = "dummy"

【讨论】:

  • 我不再收到错误,但程序卡住了。这就是我在终端中得到的所有信息:pygame 1.9.6 Hello from the pygame community. https://www.pygame.org/contribute.html
  • 这并不能解决问题,设置为“DUMMY”。这绕过了一个潜在的问题
【解决方案2】:

从类似的经验来看,如果您的某个 SDL 包出现问题,则最有可能出现问题。尝试运行以下命令。

import pygame
pygame.init()
pygame.display.list_modes()

如果您返回一个空列表,那肯定是因为包的原因。尝试重新安装它们。

可能相关:

【讨论】:

  • 1. 我得到pygame.error: video system not initialized。 2.编译时得到sdl.c:1:17: fatal error: SDL.h: No such file or directory。第二个不是我预期的那个,因为我通过包管理器安装了 SDL*,所以没有错误配置的机会。
  • @SantoshKumar 那是一个简单的错误,您的路径中是否包含目录?
  • 我添加了但什么也没发生。
  • 当您通过包管理器安装 SDL 时,您安装的是 v1.2 还是 v2.x?
  • 视频系统没有被初始化只是因为你没有调用pygame.display.init()。但是,如果您的问题和我的一样,这可能不是因为我是在 Ubuntu 虚拟机中执行此操作,您实际上将从该命令中获得一个非空列表。
【解决方案3】:

此问题可能只影响 Windows XP。尝试将其中之一添加到您的代码中:

import os
os.environ['SDL_VIDEODRIVER']='windib'

要么

import os
os.environ['SDL_VIDEODRIVER']='windlib'

祝你好运。

【讨论】:

  • 您是否安装了正确的 GPU 驱动程序?如果您运行的是台式机,则需要安装其 CD 上附带的驱动程序,而不仅仅是 Windows 建议的驱动程序。这就是我所能建议的。
  • 这是一个老了CRT 显示器,我认为该显示器没有附带任何驱动程序。
【解决方案4】:

疯狂猜测 - DISPLAY 环境变量是否设置和/或库需要,但不可用?如果您在没有提供 -X 选项的情况下通过 ssh 连接到运行它的 Linux 机器,就会出现这种情况。

【讨论】:

    【解决方案5】:

    尝试以下操作:

    import pygame
    from pygame.locals import *
    pygame.init()
    

    【讨论】:

      【解决方案6】:

      在 Linux 上,您可以使用 x11 解决问题。

      确认您的 SDL 是使用 x11 支持构建的,否则只有在您以这种方式添加了一些库之后才能自己构建它:

      sudo apt install xorg-dev libx11-dev libgl1-mesa-glx
      

      可能是xorg-dev已经安装libx11-dev

      从源代码构建 SDL 并享受

      【讨论】:

      • 请不要只发布一些工具或库作为答案。至少在答案本身中展示 how it solves the problem
      • 在我之前的回答中添加了详细信息
      【解决方案7】:

      我用下面的三个命令解决了它:

      sudo apt-get update
      
      sudo apt-get dist-upgrade
      
      sudo apt-get install libsdl1.2debian:i386
      

      【讨论】:

        【解决方案8】:

        我在尝试在 jupyter notebook 中渲染 OpenAI gym 时遇到了这个错误。按照 fushan 的回答让它停止错误,但它只渲染了一个黑色图像。查看 https://wiki.libsdl.org/FAQUsingSDL,我发现我可以使用 directfb 作为渲染器。代码最终是:

        import os
        os.environ["SDL_VIDEODRIVER"] = "directfb"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-01-30
          • 2015-12-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-28
          相关资源
          最近更新 更多