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

树莓派4上Pygame 2.1.2无法调用fbcon驱动问题求助

问题描述
  • 设备:树莓派4,外接HDMI显示屏(当前为7英寸,后续将更换为4英寸)
  • 运行模式:系统启动至控制台模式,开发工作通过远程桌面完成
  • 核心问题:
    • 使用Pygame 1.9版本时,可通过fbcon驱动正常在显示屏输出内容
    • 安装pygame_gui后,Pygame被自动升级至2.1.2版本,无法正常显示,报错信息如下:

      pygame 2.1.2 (SDL 2.0.14, Python 3.9.2)
      Hello from the pygame community. https://www.pygame.org/contribute.html
      Setting SDL variables...
      ...done
      Checking current env variables...
      SDL_FBDEV = /dev/fb0
      Traceback (most recent call last):
      File "/home/proto/pygameui.py", line 24, in
      pygame.display.init()
      pygame.error: fbcon not available

    • 尝试切换驱动为fbcon、directfb、svgalib、kmsdrm均无效
    • 降级Pygame至1.9、pygame_gui至5.7版本后,普通Pygame图形功能恢复,但pygame_gui的GUI功能无法使用
解决办法

方法1:改用KMSDRM驱动适配Pygame 2.x(推荐)

Pygame 2.x基于SDL2开发,fbcon在SDL2中支持有限,KMSDRM是更适配树莓派4硬件的驱动方案:

  • 在代码初始化前添加环境变量配置:
    import os
    # 指定使用kmsdrm驱动
    os.environ["SDL_VIDEODRIVER"] = "kmsdrm"
    # 指定树莓派的DRM设备
    os.environ["SDL_KMSDRM_DEVICE"] = "/dev/dri/card0"
    
    import pygame
    pygame.display.init()
    
  • 确保树莓派启用KMS功能:
    编辑/boot/config.txt文件,添加或修改以下配置:
    dtoverlay=vc4-kms-v3d
    max_framebuffers=2
    
    保存后重启设备生效。

方法2:用虚拟环境隔离依赖版本

避免全局环境下的版本冲突,分别为不同版本的Pygame+pygame_gui创建独立虚拟环境:

  1. 创建并激活旧版本环境(用于普通Pygame图形):
    python3 -m venv pygame19_env
    source pygame19_env/bin/activate
    pip install pygame==1.9.6 pygame_gui==0.5.7
    
  2. 创建并激活新版本环境(用于pygame_gui功能):
    python3 -m venv pygame2_env
    source pygame2_env/bin/activate
    pip install pygame==2.1.2 pygame_gui==0.6.0
    
    后续在对应环境中运行代码,配合方法1的KMSDRM驱动配置测试。

方法3:编译带fbcon支持的SDL2和Pygame

如果必须依赖fbcon驱动,可重新编译SDL2并启用fbcon支持,再编译对应版本的Pygame:

  1. 安装编译依赖:
    sudo apt-get install build-essential libfreeimage-dev libopenal-dev libpango1.0-dev libsndfile-dev libtiff5-dev libwebp-dev mercurial libfreetype6-dev libssl-dev libjpeg-dev libpng-dev libx11-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxrandr-dev libxss-dev libxt-dev libxv-dev libxxf86vm-dev libasound2-dev libdbus-1-dev
    
  2. 克隆SDL2源码并编译(启用fbcon):
    hg clone https://hg.libsdl.org/SDL
    cd SDL
    mkdir build && cd build
    ../configure --enable-video-fbcon
    make -j4
    sudo make install
    
  3. 重新编译安装Pygame:
    pip uninstall pygame -y
    git clone https://github.com/pygame/pygame.git
    cd pygame
    python setup.py build
    sudo python setup.py install
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:55:20