pygame.display.init() fails for non-root user(对于非root用户,pygame.display.init()失败)
问题描述
TL;DR
我需要使用 因此,我正在尝试使用pyGame来显示帧缓冲区 根据@nodraak(ref),它与帧缓冲区驱动程序的权限相关。
回答晚了,但我希望我能早点尝试:
您可能需要是root用户才能使用帧缓冲区驱动程序。pygame
,但由于帧缓冲区驱动程序的权限,它无法以普通用户身份初始化屏幕。超级用户可以执行pygame.display.init()
操作,但不能执行用户操作。用户在"VIDEO"组中,可以在/dev/fb0
上写入。用户缺少哪些权限才能使pygame.display.init()
起作用。
遇到错误:pygame.error: Unable to open a console terminal
说明
/dev/fb0
上的内容。
要使用我需要的一些功能(例如pygame.Surface.convert
),显示器必须初始化。但是,在调用pygame.display.init()
时出现错误,但仅当不是以root身份执行此操作时才会出错。
Atree -fupg / | grep fb | grep rwx
似乎没有显示任何可以由root执行但不能由其他用户执行的二进制文件。我非常确定将我的用户添加到组或调整某个位置的文件权限就足以解决此问题。
注意:出于安全原因,不能以root身份运行软件。
上下文
- 系统:raspbercrypi
- X服务器:无
- 屏幕:1(HDMI)
- 连接:远程(SSH)
错误来源
我正在尝试使用pygame.Surface.convert(...)
函数转换曲面。但收到以下错误:
pygame.error: cannot convert without pygame.display initialized
不过,使用pygame.display.init()
初始化pygame.display会出现以下错误:
pygame.error: Unable to open a console terminal
我是video
组的一员,有权写入屏幕,cat /dev/urandom > /dev/fb0
实际上是在屏幕上显示雪花。
fbcon
或dummy
,但无济于事。我还尝试保留用户su -m user
的根环境,结果相同。
重现错误
在没有XServer的raspbercrypi上,连接HDMI屏幕,安装pyGame。
import pygame
pygame.display.init()
错误信息:
pygame.error: Unable to open a console terminal
软件版本
python 3.7.3
pygame 1.9.4.post1
OS Raspbian Buster
libsdl 2
相关
- Pygame.display.init Documentation
- SO Question: Pygame display init on headless Raspberry(...)
推荐答案
我尝试将PYGAME用作永久显示器时遇到了同样的问题。
我决定让pi自动启动,这样可以正常工作,并以root身份启动pyGame代码。
要激活自动启动, 添加行以开始您的代码/etc/rc.local
位于exit 0
行之上。
例如(我的代码在‘/opt/pyGame_type/pg.py’中)
cd /opt/pygame_prototype
/usr/bin/python3 pg.py
然后在引导时,pi不会转到登录,而是启动pyGame程序。
注意:在没有虚拟环境的情况下使用";apt get";安装的pyGame,较新的pip安装版本使我失败。
这篇关于对于非root用户,pygame.display.init()失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:对于非root用户,pygame.display.init()失败
基础教程推荐
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01