☰
树莓派4B上如何稳定安装PySide2?结合venv虚拟环境与Bullseye系统的完整方案
2026/10/2 1:02:36 网站建设 项目流程

我前前后后在树莓派4B上折腾过好几套 Python 环境,最后固定下来一条最稳的路线:Bullseye 系统 + 系统级 PySide2 包 + venv 虚拟环境。这套组合让我从“刷完系统不知道该装什么”到“写好的 GUI 程序开机自启上屏”,中间几乎没有走弯路。这篇就把整条流程完整写出来,包括烧录、初始化、创建 Python 虚拟环境、安装 PySide2、跑通第一个界面,以及所有我在实际过程中踩过的坑。

如果你手里正好有一块树莓派4B,想用它做智能家居面板、工业触摸屏界面、信息看板,或者只是想学一下 Linux 下的 Python GUI 开发,这篇可以直接照着抄。我会尽量把每条命令、每个参数背后的原因都解释清楚,这样即使换一台 Debian 系的 Linux 设备,你也能迁移过去。

1. 项目概述与环境认识

1.1 这个项目解决什么问题:树莓派4B上的GUI开发组合

树莓派4B在我眼里一直是最适合做“桌面小设备”的开发板之一。它不像传统单片机和屏幕之间要跨好几层协议,而是直接跑一个完整的 Linux 系统,能装桌面环境,能连 HDMI 输出,也支持 GPIO 接外部传感器。你要做的往往只是写一个 Python 程序,把数据读上来,再用界面展示出去。

PySide2 在这里面扮演的是图形界面的那层“皮”。它是 Qt 5 官方的 Python 绑定,控件齐全、样式接近原生桌面、跨平台,而且对嵌入式设备的性能要求相对可控。相比 Tkinter 那种简陋得只适合做练习的控件库,或者 GTK 那种在 Python 里用起来略显别扭的绑定,PySide2 的文档、社区资料和设计工具都成熟得多。树莓派社区里很多开源项目选它,正是因为资料多、上手快、后期维护不折腾。

但树莓派上跑 Python 有一个特别容易被新手忽略的麻烦:系统环境的 Python 是被 apt 和一堆系统工具共用的,你要是直接往全局 site-packages 里塞包,很可能装一个包就把另一套软件的依赖给弄坏了。更常见的是,你在这个项目里用了某个模块的高版本,另一个项目却需要低版本,两边打架。这就是 Python 虚拟环境要解决的问题,也是本文一直强调的核心概念。把虚拟环境理解成“给每个项目单独开一个小仓库”,里面装的库互不干扰,系统本身也不受影响,心里就踏实了。

1.2 为什么是“venv + PySide2”而不是其他方案

先回答一个很多人会问的问题:为什么不用 Anaconda?Anaconda 在 x86 的 PC 上确实好用,但在树莓派这种 ARM 平台上,情况完全不同。官方对 ARM 的打包支持不完整,很多包都要走 conda-forge,源的速度和稳定性也不理想,而且安装包体积很大,塞在树莓派的 SD 卡上非常占空间。venv 是 Python 自带的模块,一条命令就能创建环境,没有额外依赖,对树莓派来说是最轻量、最不容易引入新问题的选择。

PySide2 的安装也是同理。很多教程上来就让你pip install PySide2,这在 PC 上没问题,但在树莓派上很容易踩到编译的坑。尤其是较新的 Raspberry Pi OS Bookworm 版本自带 Python 3.11,而 PySide2 的官方二进制包对这个版本的 Python 支持并不友好,经常出现 pip 下载完源码包后开始现场编译,编译一两个小时然后报错的情况。我在第 4 章会详细讲解决方案,核心思路就是优先用 Debian 官方仓库预编译好的 python3-pyside2 包,再把虚拟环境配置成可以复用系统包的模式。这相当于把“生成环境的稳定性”和“项目环境的隔离性”结合起来,既避开编译灾难,也不会污染系统。

1.3 需要准备什么:硬件、软件与系统版本建议

硬件方面,一块树莓派4B 至少 4GB 内存版本比较舒服,2GB 版本跑轻量界面也可以,但编译东西、开浏览器查资料就会明显吃力。SD 卡建议 Class 10 或 A1 以上,容量 32GB 起步,否则装完系统和 Qt 库之后剩余空间会比较紧张。电源必须用 5V 3A 的,能上官方电源最好,劣质电源会导致电压不稳,树莓派会自动降频,界面都跟着卡。

系统版本这里我要强调一个关键选择:最好用 Raspberry Pi OS Bullseye 分支,而不是最新的 Bookworm。原因是 Bullseye 自带 Python 3.9,Debian 仓库里保留了 python3-pyside2 这个包,装上就能用。Bookworm 升级到 Debian 12 之后,仓库里已经移除了 PySide2 相关包,加上 Python 版本偏高,安装成本会成倍增加。如果你已经刷了 Bookworm,我会在第 5.1 节给出补救方案。系统位数建议选 64 位,PySide2 相关依赖在 64 位环境下更完整,跑 Qt 程序也更流畅。

2. 树莓派4B系统初始化:先把开发底座打牢

2.1 系统烧录与关键初始化设置

烧录系统这一步,我推荐直接用 Raspberry Pi Imager,比手工 dd 写镜像更省心。打开 Imager 后选择树莓派 4 对应的镜像,然后不要急着点烧录,先按Ctrl + Shift + X打开高级设置菜单。这里能做三件非常重要的事:设置用户名和密码、开启 SSH、配置 Wi-Fi。

很多新版教程默认用户名还是pi,密码还是raspberry,但新版系统早就改了规则,建议在 Imager 里自己设一个用户名,比如pi保持习惯也行,密码一定要换成高强度组合。SSH 建议勾选开启,这样即使没有显示器,也能从电脑连进去操作。Wi-Fi 提前填好,树莓派开机后就会自动联网,省去接网线或临时接屏幕的麻烦。

烧录完成后,把 SD 卡插进树莓派,接上电源等待启动。第一次开机会比较慢,因为系统要扩展分区并做一些初始化。如果你在 Imager 里已经配好了 SSH,可以直接从路由器后台查到树莓派的 IP,然后通过ssh pi@<树莓派IP>登录。IP 查找失败时,可以用ping raspberrypi.local尝试,很多系统默认开启了 mDNS 主机名解析。

2.2 首次开机后的环境更新与必备组件

登录进系统之后,第一件事是更新软件源和现有软件包。这个步骤别跳过,因为树莓派镜像文件里带的软件包索引通常不是最新的,尤其是安全补丁和新版 Qt 库,都在apt update之后才能拿到。

sudo apt update sudo apt upgrade -y

更新过程可能需要几分钟到十几分钟,取决于网络状况。升级完成后,安装 Python 虚拟环境和开发常用的基础组件:

sudo apt install -y python3-venv python3-pip git build-essential

python3-venv对应的是venv模块,如果没有安装,之后创建虚拟环境时会出现 “ensurepip is not available” 这类报错。python3-pip给虚拟环境内部提供 pip 工具。build-essential包含 gcc、make 等编译工具,虽然我们主推用 apt 装 PySide2,但保不齐以后 pip 某个包需要编译,先装上能少踩一个坑。

如果你打算直接在树莓派上编辑代码,再装一个趁手的编辑器。轻量一点的可以用vim,习惯图形界面的可以装geany或者thonny。我个人更推荐在电脑上用 VS Code 写好代码,通过 SSH 同步到树莓派上运行,具体方法在下一节说。

2.3 用 SSH 和 VNC 把树莓派变成“远程开发机”

没有独立显示器的场景下,SSH 是操作树莓派的基础。日常开发流程可以这样安排:在电脑上用 VS Code 安装 Remote-SSH 插件,连接树莓派的 IP 和用户名,就能直接编辑树莓派上的文件、打开终端执行命令。首次连接时 VS Code 会在树莓派上安装一个服务端组件,内存占用大概一两百 MB,对 4GB 版本的树莓派来说没什么压力。

如果需要看到图形界面,那就启用 VNC。在树莓派终端里运行:

sudo raspi-config

进入 “Interface Options” -> “VNC”,选择开启。然后在电脑上用 VNC Viewer 连接树莓派 IP,就能看到完整的桌面。这里有个小细节:树莓派桌面版预装的 VNC 方案是直接共享当前桌面会话,所以远程桌面里看到的窗口和你插着 HDMI 时看到的窗口是同一个,DISPLAY 变量通常都是:0,这点对后面运行 PySide2 程序非常关键。

如果你打算做一个长期运行的界面程序,建议在 raspi-config 里把“桌面自动登录”也打开,这样开机直接进入桌面,省得每次都要手动登录后再启动程序。路径在 “System Options” -> “Boot / Auto Login” 里选择桌面自动登录。

3. Python 虚拟环境:理解原理再动手

3.1 为什么建议每个项目都建虚拟环境

我第一次在树莓派上做 Python 项目时,也是图省事,直接 pip 装全局包。结果某一次给爬虫项目装了一个新版的 requests,把另一个跑在 systemd 服务里的旧项目弄崩了,排查了很久才发现是依赖版本被顶掉。从那之后我就养成了习惯:只要是独立项目,一律先建虚拟环境。

虚拟环境的原理其实很简单。python3 -m venv myenv会在myenv目录下创建三个核心部分:bin/里放的是指向系统解释器的 python 软链接、pip 等可执行文件;lib/python3.9/site-packages/是这个环境自己的包安装目录;pyvenv.cfg是一个配置文件,标记着这个环境基于哪个解释器。当你在终端里执行source myenv/bin/activate后,PATH 环境变量会被修改,系统优先使用myenv/bin下的 python 和 pip,这时候你安装的所有包都会进入myenv/lib/.../site-packages,和系统其他部分完全隔离。

我拿个目录结构让你直观感受一下:

myenv/ ├── bin/ │ ├── python -> /usr/bin/python3.9 │ ├── pip │ └── activate ├── lib/ │ └── python3.9/ │ └── site-packages/ └── pyvenv.cfg

pyvenv.cfg里能看到两个关键字段:home指向系统解释器的路径,system-site-packages用于控制这个虚拟环境能否“看到”系统全局 site-packages。这个字段默认是false,如果你需要环境复用系统的某些已装包,创建时加上--system-site-packages参数即可,后面安装 PySide2 时我们就会用到。

3.2 在树莓派上创建和激活虚拟环境的完整步骤

现在我们在树莓派上实操一遍。先建一个开发目录,命名看你习惯,我一般用~/dev统一管理所有项目:

cd ~ mkdir -p dev cd dev python3 -m venv --system-site-packages pyside2_env

这里我特意加了--system-site-packages,原因在第 4 章会揭晓:PySide2 我们用 apt 装到系统里,虚拟环境需要能看到这个系统包。如果你没有这个需求,普通项目可以不加这个参数,做成完全隔离的环境更干净。

创建好之后,激活环境:

source pyside2_env/bin/activate

激活成功的标志是终端提示符前面出现了(pyside2_env)前缀。接下来做几个验证操作,确认环境确实是独立的:

which python python -V pip list

which python如果显示/home/pi/dev/pyside2_env/bin/python,说明 PATH 已经生效。pip list输出的包列表如果和系统全局的pip list不一样,说明隔离也生效了。退出环境非常简单,执行deactivate即可。

我这里要特别提醒一点:虚拟环境不要用 Windows 上的 venv 复制到树莓派上使用。venv 的配置里写的是绝对路径,Windows 和 Linux 的路径结构完全不同,复制过来后 python 软链接是坏的,环境直接不可用。如果要在多台设备间迁移环境,后面我会讲更靠谱的方案。

3.3 虚拟环境的“加速”技巧:pip 镜像与 uv

树莓派在国内网络环境下,直接使用官方 PyPI 源下载 python 包经常慢到怀疑人生。解决办法是修改 pip 配置文件,换成速度更理想的镜像源。在树莓派当前用户目录下创建或编辑~/.pip/pip.conf:

[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cn

这是清华源的地址,常见的还有阿里云、豆瓣源。改完之后 pip 下载速度会有质的提升。需要注意的是,这个配置对所有虚拟环境和系统全局的 pip 都生效,影响范围可控,我个人觉得是值得的。

如果你觉得python3 -m venv创建环境的速度太慢,另一个选择是试试uv。它用 Rust 写的,创建虚拟环境的耗时基本可以忽略不计,同时也兼容 pip 的 requirements 用法。安装很简单:

pip install uv

然后创建环境就变成:

uv venv --system-site-packages pyside2_env uv pip install PySide2

不过 uv 的优点主要体现在包安装并行度上,对于普通体量的项目体验不太明显。我建议先学会标准的 venv 流程,以后需要大量安装包时再考虑 uv,本末不能倒置。

4. PySide2 安装与 GUI 开发全流程

4.1 安装 PySide2 的两种路线:apt 优先,pip 兜底

这是整篇文章里最想让你少走弯路的地方。PySide2 在树莓派上的安装方法,网上主流教程几乎都是 pip 直装,但在很多系统版本上这条路行不通。我推荐的做法是:

sudo apt install -y python3-pyside2 python3-pyside2.qtwidgets

如果提示找不到python3-pyside2.qtwidgets这个包名,可以先执行apt search pyside2查看系统仓库里有哪些相关包,不同 Debian 版本的包拆分方式会有差异。安装完成后,进入我们之前创建的虚拟环境,验证一下:

cd ~/dev source pyside2_env/bin/activate python -c "from PySide2.QtWidgets import QApplication; print('PySide2 OK')"

这里能成功,靠的就是虚拟环境创建时的--system-site-packages参数。如果当时创建环境时没有加这个参数,import PySide2 会因为找不到模块而报ModuleNotFoundError。解决办法有两个:一是删掉旧环境重建成带系统包的,二是直接用系统 Python 跑,前者更符合长期开发习惯,建议选前者。

为什么 apt 装的 PySide2 这么重要?因为 Debian 在打包 Python 库时已经把需要的 Qt 依赖编译好了,安装的是针对 ARM 架构优化过的二进制包,装完即用。而 pip 直装 PySide2 在 Bullseye 的 Python 3.9 上还算可控,但换到 Bookworm 的 Python 3.11 上,很可能会因为找不到预编译的 wheel 包,转而下载源码包开始现场编译。PySide2 这个项目体量不小,树莓派上编译一次动不动几个小时,中途还容易内存不足崩溃,非常不划算。

如果你的场景必须用 pip 装,那至少确认两件事:一是系统是 Bullseye 或 Python 版本不超过 3.9,二是当前架构有对应的 wheel 包。否则就老老实实用 apt 路线。

4.2 第一个 PySide2 窗口:从创建工程到显示界面

环境准备好之后,我们先写一个最简单的窗口程序,确保 PySide2 可以在树莓派的桌面环境里正常显示。在虚拟环境中创建一个hello.py:

nano hello.py

写入以下代码:

import sys from PySide2.QtWidgets import QApplication, QLabel app = QApplication(sys.argv) label = QLabel("Hello PySide2 on Raspberry Pi!") label.resize(400, 200) label.show() sys.exit(app.exec_())

这段代码做了四件事:创建 QApplication 应用对象,创建 QLabel 标签并设置大小,调用show()让标签显示出来,最后进入 Qt 的事件循环。事件循环是 GUI 程序的核心概念,你可以把它理解成一个后台的“消息管家”,鼠标点击、键盘输入、窗口重绘这些事件都由它分配和处理。没有app.exec_(),窗口会一闪而过。

在树莓派上运行时,如果程序是直接连着 HDMI 显示器,并且已经登录了桌面,那直接执行:

python hello.py

如果是在 SSH 终端里运行,需要先手动指定显示目标:

export DISPLAY=:0 python hello.py

DISPLAY是 Linux 图形环境的一个关键环境变量,它告诉程序往哪个显示设备上画窗口。:0表示第一个本地 X 显示,VNC 共享桌面场景下通常也是:0。如果运行时报could not connect to display,多半就是 DISPLAY 没设置对,或者当前登录的桌面会话和运行程序的用户不一致。

屏幕中央出现 “Hello PySide2 on Raspberry Pi!” 的标签,说明已经在树莓派上跑通了 PySide2 界面的整个链路。到这个节点,最艰难的阶段已经过去了。

4.3 实战小项目:做一个 CPU 温度监控面板

Hello World 只能算热身,现在我们做一个更有实用价值的小界面:CPU 温度监控面板。树莓派的 CPU 温度在/sys/class/thermal/thermal_zone0/temp文件里直接可读,数值通常为类似38560这样的毫摄氏度,除以 1000 就是摄氏度。这个接口文件是内核虚拟出来的,读起来和普通文件一样,非常适合做示例数据源。

创建temp_panel.py:

import sys from PySide2.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout from PySide2.QtCore import QTimer class TempPanel(QWidget): def __init__(self): super().__init__() self.setWindowTitle("树莓派温度面板") self.resize(400, 200) self.temp_label = QLabel("--") self.temp_label.setStyleSheet("font-size: 28px; font-weight: bold;") self.refresh_btn = QPushButton("刷新温度") layout = QVBoxLayout(self) layout.addWidget(self.temp_label) layout.addWidget(self.refresh_btn) self.refresh_btn.clicked.connect(self.update_temp) self.timer = QTimer(self) self.timer.timeout.connect(self.update_temp) self.timer.start(2000) self.update_temp() def read_temp(self): with open("/sys/class/thermal/thermal_zone0/temp") as f: return int(f.read().strip()) / 1000.0 def update_temp(self): temp = self.read_temp() self.temp_label.setText(f"CPU 温度: {temp:.1f} °C") app = QApplication(sys.argv) panel = TempPanel() panel.show() sys.exit(app.exec_())

这个例子比上一个多了三个关键概念:布局、信号槽和定时器。布局是指QVBoxLayout,它负责把 label 和按钮在窗口里竖直排列,不需要手工算计件坐标。信号槽是 Qt 最核心的通信机制,clicked.connect(...)的意思就是按钮被点击时自动调用update_temp方法。定时器则让界面每 2 秒自动刷新一次,不用手动干预。

运行方法不变,直接python temp_panel.py。这时你应该能看到一个实时显示 CPU 温度的小窗口。把这个小面板扩展一下,加上读取内存占用、CPU 频率、磁盘空间,再接上 DHT22 温湿度传感器,就是一个完整的智能环境监控终端。这也是很多树莓派桌面项目的雏形。

编写这类代码时我有个习惯:先只画界面布局,把假数据写死,确认布局没问题后再接真实的数据源。这样可以把 GUI 调试和数据读取调试互相分开,定位问题会快很多。

4.4 开机自启:让 PySide2 程序插电就跑

界面程序写好后,让它开机自动运行是最常见的需求。我见过有人在~/.bashrc里加启动命令,也有人用 crontab @reboot,但这些方案在树莓派桌面环境下都容易出问题,要么程序启动太早导致连不上显示服务,要么 crash 后没人拉起来。正确做法是用 systemd 服务来管理。

创建一个服务文件:

sudo nano /etc/systemd/system/temp-panel.service

写入以下内容:

[Unit] Description=Temp Panel After=graphical.target [Service] Environment=DISPLAY=:0 User=pi WorkingDirectory=/home/pi/dev ExecStart=/home/pi/dev/pyside2_env/bin/python /home/pi/dev/temp_panel.py Restart=always RestartSec=5 [Install] WantedBy=graphical.target

几个字段需要重点解释:Environment=DISPLAY=:0让 systemd 启动的服务知道往哪个显示设备画窗口,这是最容易漏的一项;ExecStart必须指向虚拟环境里的 python 绝对路径,因为 systemd 环境里不会自动执行 activate,直接用/usr/bin/python会导致 PySide2 模块找不到;Restart=always表示程序崩溃后 5 秒自动重启,这个对长时间运行的设备很有用。

写好之后,依次执行:

sudo systemctl daemon-reload sudo systemctl enable temp-panel sudo systemctl start temp-panel

enable是在系统启动时自动加载这个服务,start是立即启动。查看运行状态用sudo systemctl status temp-panel,如果程序有输出,可以看日志:sudo journalctl -u temp-panel -f。开机自启这块最容易出的问题就是环境变量缺失和路径写错,排查时优先检查这两项。

这里补充一个细节:如果你的树莓派设置的是“不开机自动登录桌面”,那么 graphical.target 虽然启动了,但没有任何用户在桌面上,DISPLAY 对应的 X 会话不一定存在,PySide2 程序还是起不来。所以开机自启配合第 2.3 节提到的桌面自动登录一起使用,才能做到真正插电即显示。

5. 树莓派上PySide2开发的常见坑与故障排查实录

5.1 安装阶段最常见的报错与解决方案

先说 pip 直装 PySide2 时最常见的“编译地狱”。如果你在安装时看到日志里出现Running setup.py bdist_wheel for PySide2,然后长时间卡住没有进展,最后报编译错误,基本可以断定当前 Python 版本或系统架构没有对应的预编译 wheel。PySide2 官方对 Python 版本的上限支持比较保守,在 Bookworm 的 Python 3.11 上几乎必然触发源码编译。如果你的树莓派是 32 位系统,情况更复杂,armhf 架构的 wheel 覆盖也不完整。

这个问题的根治方案就是切换到 Bullseye 并用 apt 安装。已经刷了 Bookworm 的朋友,如果必须用 PySide2,一个可行的办法是编译安装一个较低版本的 Python 到系统里,再用虚拟环境指定这个解释器。但这个过程会涉及make编译和依赖安装,耗时也比较长,我更建议直接试一下 PySide6:API 和 PySide2 高度相似,大部分代码改动很小,Bookworm 对应的依赖准备也轻松很多。

另外一类高频报错出现在 Qt 运行时,比如:

qt.qpa.plugin: Could not find the Qt platform plugin "xcb"

或者:

ImportError: libxcb-cursor.so.0: cannot open shared object file

这类问题本质上是系统缺少 Qt 运行时依赖库,用 apt 按提示安装对应库即可。树莓派上常见的有libxcb-cursor0、libxkbcommon-x11-0、libxcb-xinerama0,一次装全更省事:

sudo apt install -y libxcb-cursor0 libxkbcommon-x11-0 libxcb-xinerama0

还有一个容易被忽略的问题是:不要用sudo直接运行 GUI 程序。sudo 之后用户的 HOME 和环境变量都会变化,X 授权的~/.Xauthority读取不到,即使 DISPLAY 设置对了也会连接失败。树莓派默认用户pi自己在桌面会话里运行完全没有问题。

5.2 运行阶段的显示、内存与性能问题

程序好不容易跑起来了,画面闪烁或者窗口花屏也是很常见的情况。先说 VNC 场景:树莓派性能有限,VNC 默认的编码方式在窗口频繁刷新时会掉帧、产生残影。遇到这个问题,可以在 VNC Viewer 里把画质调低、关闭 JPEG 压缩,或者直接改用直连 HDMI 输出,界面流畅度会好很多。

内存方面的坑主要出现在长期运行时。PySide2 程序本身内存占用不算夸张,但如果你同时开着桌面、浏览器、VNC 服务,2GB 版本内存会很紧张。观察内存余量:

free -h

如果 Swap 使用量持续攀升,建议把交换分区调大一点。编辑/etc/dphys-swapfile:

CONF_SWAPSIZE=2048

然后重启 swap 服务:

sudo systemctl restart dphys-swapfile

大内存版本树莓派可以把 Swap 保留默认值,但如果你后续要跑数据库或 Web 服务,我建议 4GB 以下版本统一把 Swap 调到 2GB 以上,能显著减少 OOM 杀进程的概率。

散热导致的降频也是个隐形问题。树莓派 4B 跑 Qt 界面时 GPU 和 CPU 都有一定负载,温度超过 80 度后系统会主动降频,界面交互会出现延迟。我用watch -n 1 vcgencmd measure_temp观察过温度变化,大夏天不加散热片闲置状态下都能到 60 度以上,负载一上来更容易触发降频。最直接的解决方式是加一套官方散热片或主动散热风扇,这是我给所有要做长期运行界面的玩家最实在的建议。

5.3 开发效率与后续扩展建议

最后一个部分,我想聊聊如何让这套环境真正变成你的日常生产力工具。首先,代码开发不要长期在树莓派本机上操作,无论是 vim 还是图形编辑器,体验都比不上 PC 上的 VS Code。我的工作流是 PC 上写代码,VS Code Remote-SSH 直接连接树莓派,在树莓派上调试运行。Remote-SSH 的配置一次之后基本是傻瓜式的,局域网内连入很快,树莓派侧的内存占用可以接受。

其次,建议项目一开始就把依赖清单管理起来。在虚拟环境激活状态下,运行:

pip freeze > requirements.txt

后续要迁移到另一台设备时,先装一个同样的虚拟环境,然后pip install -r requirements.txt就能恢复大部分依赖。PySide2 这种 apt 安装的系统级包不会出现在 requirements 里,迁移时记得先装对应系统包。

最后说一句实话:PySide2 现在已经停止维护了,官方推荐的新方案是 PySide6。如果你不是被现有 PySide2 项目绑住,而是从零开始学,可以直接学 PySide6。它的 API 和 PySide2 有大量重叠,我把这篇教程里的大部分代码改成 PySide6 只需要改 import 语句就能跑通。但如果你坚持用 PySide2,本文这条 Bullseye + apt + venv 的路线,依然是我测试下来在树莓派上最不容易翻车的一种。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询