适用Raspberry Pi OS BookwormDebian 12、PyQt5、Python 虚拟环境、OpenCV解决 Qt 插件冲突、开机直接全屏启动程序不加载桌面环境崩溃自动重启。痛点Bookworm 新版 Xorg 权限限制、OpenCV 自带 Qt 与 PyQt5 插件冲突、could not connect to display、xcb 平台插件加载失败、虚拟环境激活问题。前置说明系统Raspberry Pi OS 64-bit Bookworm界面库PyQt5虚拟环境目录/home/pi/DAYA程序路径/home/pi/daya/V0.4/main.py目标开机自动登录 → 拉起极简 X11 → 激活 venv → 运行 PyQt 程序程序退出或崩溃后自动重启⚠️ 重要PyQt5 只支持 X11不原生支持 Wayland不要用系统自带 labwc 桌面做 kiosk资源占用高且容易异常。一、系统基础配置设置开机进入控制台 tty1 自动登录 pi 用户打开 raspi-configsudo raspi-config进入1 System Options→S5 Boot选择B1 ConsoleText console开机进入命令行不进桌面。新版 raspi-config 无图形自动登录选项执行下面一行命令开启 tty1 自动登录sudo raspi-config nonint do_boot_behaviour B2等价于 Console Autologin开机 tty1 直接登录 pi无需输入账号密码。备选手动配置自动登录上面命令失效时使用sudo mkdir -p /etc/systemd/system/gettytty1.service.d sudo nano /etc/systemd/system/gettytty1.service.d/override.conf写入以下内容[Service] ExecStart ExecStart-/sbin/agetty --autologin pi --noclear %I $TERM保存退出重载 systemdsudo systemctl daemon-reload关闭自动登录命令sudo rm /etc/systemd/system/gettytty1.service.d/override.conf sudo systemctl daemon-reload二、安装 X11 基础服务与 xcb 依赖解决 xcb 找不到、display 报错sudo apt update # 安装 xorg、xinit 极简 X 服务不装桌面 sudo apt install xorg xinit xserver-xorg-legacy # 补齐 xcb 全套依赖Bookworm 必装虚拟环境经常缺 sudo apt install libxcb-cursor0 libxkbcommon-x11-0 libxcb-xinerama0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-shape0修改 Xwrapper 权限解决Cannot open /dev/tty0 (Permission denied)sudo nano /etc/X11/Xwrapper.config修改内容为allowed_usersanybody needs_root_rightsyes保存退出。三、处理 OpenCV 与 PyQt5 Qt 插件冲突关键坑原因普通opencv-python包内置 Qt会篡改 Qt 插件路径导致 PyQt5 加载 xcb 失败我们使用 PyQt 绘图不需要cv2.imshow。激活虚拟环境source /home/pi/DAYA/bin/activate卸载带 GUI 的 opencv安装无 GUI 的 headless 版本pip uninstall opencv-python -y pip install opencv-python-headless如果代码必须使用cv2.imshow不能换 headless 方案在启动脚本中手动指定QT_QPA_PLATFORM_PLUGIN_PATH指向 PyQt5 插件目录。四、编写 xinit 启动脚本~/.xinitrc作用X11 启动后自动执行关闭屏幕休眠、激活虚拟环境、循环启动 PyQt 程序、输出日志。nano ~/.xinitrc完整内容直接复制#!/bin/bash # 关闭屏幕休眠、DPMS 节能 xset s off xset -dpms xset s noblank 指定 X 显示编号解决 could not connect to display export DISPLAY:0 进入家目录激活虚拟环境 cd /home/pi source DAYA/bin/activate 循环程序崩溃或退出后自动重启日志写入 app.log while true; do python3 /home/pi/daya/V0.4/main.py /home/pi/app.log 21 sleep 1 done赋予执行权限chmod x ~/.xinitrc五、配置 bash_profiletty1 登录后自动执行 startxnano ~/.bash_profile写入if [ $(tty) /dev/tty1 ]; then startx fi逻辑仅本地 tty1 终端触发 startxSSH 远程登录不会拉起 X11避免报错。六、本地分步测试严禁 SSH 直接 startx必须接显示器、键盘在树莓派本地黑终端tty1测试。本地 tty1 手动测试整套流程source DAYA/bin/activate startx✅ 预期X11 启动PyQt 窗口弹出关闭程序后1 秒自动重启。❌ 禁止SSH 远程直接执行startx或者python3 main.py一定会报 display 错误。日志查看调试崩溃# 实时跟踪日志 tail -f /home/pi/app.log七、PyQt 代码配套建议Kiosk 全屏 ESC 退出调试在主窗口类中添加from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QWidget class MainWindow(QWidget): def init(self): super().init() # 全屏模式 self.showFullScreen() # 无边框备选 # self.setWindowFlags(Qt.FramelessWindowHint) # self.show() # ESC 按键退出程序调试救命快捷键 def keyPressEvent(self, event): if event.key() Qt.Key_Escape: self.close()/code/pre 八、常用维护命令清单 # 查看程序运行日志 tail -f /home/pi/app.log 切换回开机自动进桌面恢复原来系统 sudo raspi-config nonint do_boot_behaviour B4 关闭 tty1 自动登录开机需要手动输密码 sudo rm /etc/systemd/system/gettytty1.service.d/override.conf sudo systemctl daemon-reload 临时取消自动重启调试代码用修改 .xinitrc 删掉 while 循环注恢复系统原厂桌面模式完全回到普通桌面系统文章内自带命令直接执行会关闭控制台自动登录开机进图形桌面自动登录 pi 用户sudo raspi-config nonint do_boot_behaviour B4 sudo rebootB4 boot to desktop autologin开机直接进 Bookworm 桌面环境。切回原来 Kiosk 模式sudo raspi-config nonint do_boot_behaviour B2 sudo rebootB2 Console Autologin控制台自动登录配合.bash_profile里 startx 重新启动 kiosk 模式。
企业数字化 ERP 产品动态
相关推荐
EthernetIP IO从站设备数据 转profinet IO项目案例 案例说明设置网关采集EthernetIP IO设备数据把采集的数据转成profinet IO协议转发给其他系统。VFBOX网关工作原理VFBOX网关是协议转换网关,是把一种协议转换成另外一种协议。网关可以采集西门子,欧姆龙,三菱,AB PLC,DL… · 2026/11/5 3:49:18
fpga-wide-data-crc32 基于 FPGA 实现高位宽数据流的 CRC 校验的一种方式 —— 以万兆以太网 64bit 数据流的 CRC32 为例对于FPGA 上的万兆网,MAC 层或者XGMII 对接的数据通路是 64bit 156.25 MHz。
收发两个方向都要处理以太网 FCS(CRC32)。本文把其中"高位… · 2026/11/5 3:49:18
口播稿-9分钟看懂Kubernetes底座 9 分钟,看懂 Kubernetes 的底座 《底座认知》系列 视频口播稿 预计时长 8 分 40 秒 | 约 1900 字 | 语速 220 字/分钟 目 录 一、录制说明 二、口播正文 0:00 — 0:35 开场:三秒钟里发生了什么 0:35 — 1:45 第一个比喻&#… · 2026/11/5 3:49:18
TED精读如何训练高阶英语思维与认知能力 1. 项目概述:这不是一节普通英语课,而是一次认知升级的实操训练“跟TED演讲学英文:How AI can save our humanity by Kai-Fu Lee”——这个标题乍看是语言学习类内容,但真正懂行的人一眼就能看出,它根本不是在教“how … · 2026/11/5 4:39:54
PostgreSQL INSERT操作全面指南与性能优化 1. PostgreSQL INSERT 操作深度解析PostgreSQL 作为一款功能强大的开源关系型数据库,其 INSERT 语句提供了远超基础数据插入的丰富功能。在实际开发中,合理运用这些特性可以显著提升数据操作效率和可靠性。1.1 基础语法与核心组件INSERT 语句的基础结构包… · 2026/11/5 4:39:54
Python在线考试系统开发:微服务架构与大数据分析实践 1. 项目概述与设计背景在线考试系统作为教育信息化的重要载体,正在经历从传统纸质考试向智能化评估的转型。我们团队基于Python技术栈开发的这套系统,核心目标是解决三个行业痛点:一是人工阅卷效率低下,二是考试过程监管困难&… · 2026/11/5 4:39:54
MySQL执行机制解析与性能优化实战 1. 项目概述MySQL作为最流行的开源关系型数据库之一,其内部执行机制一直是开发者们关注的焦点。在实际工作中,我们经常遇到这样的困惑:为什么这条SQL执行这么慢?索引为什么没生效?连接池配置多少合适?要真正… · 2026/11/5 4:39:54
小波阈值去噪五种改进变体:原理、MATLAB实现与避坑指南 简介:面向信号处理初学者与工程实践者的MATLAB小波阈值去噪工具包,聚焦软阈值、硬阈值及五种改进阈值方法的快速实现。作者在wden、thselect与wthresh三个函数基础上进行改造,并进一步封装为filterWaveletTh函数,延续专栏一贯的代… · 2026/11/5 4:39:54
从NRZ到PAM4:SerDes高速链路调制选型、均衡与眼图调试 高速串行链路这个圈子,做得久了你会发现一个很有意思的现象:真正决定一个系统能不能跑通的,往往不是那几百页的协议栈,而是最底层那一对差分线上的信号到底长什么样。SerDes 系统里 NRZ 和 PAM4 这两种调制方式的取舍,… · 2026/11/5 4:38:47
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
多智能体协作系统架构设计与实践优化 1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39
大模型系统性入门实战指南:从原理到部署微调的全链路路线 提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39
鸿蒙文件系统沙箱机制解析与开发实践 1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38