跳到主要内容

树莓派OS

介绍

Raspberry Pi OS 是 Raspberry Pi 计算机的官方操作系统 (OS),免费提供。我们建议大多数 Raspberry Pi 使用场景使用 Raspberry Pi OS。

Raspberry Pi OS 基于 Debian Linux 发行版,支持超过 69,000 个 Debian 软件包。Raspberry Pi 遵循 Debian 发布周期 的交错版本,大约每两年发布一次。最新版本的 Raspberry Pi OS 基于 Debian Trixie。前一版本基于 Debian Bookworm

操作系统安装

Raspberry Pi OS 通过 Raspberry Pi Imager 安装,Imager 可在 Windows、Mac 和 Linux 上使用。相关说明请参阅 使用 Imager 安装。您也可以直接从 我们的网站 下载 Raspberry Pi OS 的磁盘镜像(开箱即用的文件),然后将其写入 SD 卡开始使用您的树莓派。

如果您正在运行旧版 Raspberry Pi OS,想要使用最新主版本,请不要执行就地更新(在不重新安装的情况下更新当前系统)。而应通过安装 Raspberry Pi OS 的新镜像重新开始。相关说明请参阅 使用 Imager 安装

注意

请备份旧系统中您不想丢失的任何重要文件。安装新操作系统会覆盖 SD 卡上的所有数据。

版本

Raspberry Pi OS 提供三个版本:

  • Raspberry Pi OS(带基础软件的桌面版)是 Raspberry Pi Imager 中推荐的版本。它提供图形桌面环境,包含 Chromium 与 Firefox 网页浏览器、VLC 媒体播放器和 Thonny Python 环境等应用程序。
  • Raspberry Pi OS Full(带基础软件和推荐应用的桌面版),提供与默认 Raspberry Pi OS 版本相同的图形桌面环境和应用程序,但还包含 LibreOffice 办公套件、KiCad、Scratch 编程环境以及许多其他应用程序。
  • Raspberry Pi OS Lite(仅命令行版,不含图形桌面)。此版本适合无显示器的服务器、嵌入式系统或较旧的树莓派型号,例如初代 Raspberry Pi、Raspberry Pi 2 和 Raspberry Pi Zero。

体系结构

Raspberry Pi OS 提供 64 位和 32 位两种版本。请根据您的树莓派硬件选择最合适的版本:

  • 64 位 版本适用于具有 64 位处理器的较新树莓派型号,如 Raspberry Pi 3、4 和 5。它可以运行 64 位和 32 位软件,也能处理更多内存 (RAM),对计算密集型任务运行速度更快。
  • 32 位 版本适用于具有 32 位处理器的较旧树莓派型号,如初代 Raspberry Pi、Raspberry Pi 2 和 Raspberry Pi Zero。它占用的内存更少,可能与较旧的软件和硬件有更好的兼容性。

管理软件和固件更新

有两种方式可以更新您当前的操作系统:

  • 基于 APT。我们建议大多数用户采用此方式。可用它更新当前 Raspberry Pi OS 安装的软件、内核以及稳定版固件。相关说明请参阅 更新当前的树莓派软件
  • rpi-update。用于实验或预发布版本的内核与固件测试、开发或特定错误修复。相关说明请参阅 更新预发布固件

常规固件更新已包含在 APT 更新中(raspi-firmware 软件包);rpi-update 仅适用于开发者与测试人员,或在 Raspberry Pi 工程师明确建议时使用。

如果您希望从旧版 Raspberry Pi OS 升级到新版(例如从 Bookworm 升级到 Trixie),而非更新当前操作系统,请使用新镜像重新安装操作系统。相关说明请参阅 升级到新的主版本

更新当前的树莓派软件

请保持您树莓派上软件的最新状态。这有助于保护您的树莓派免受 漏洞 攻击,并确保您获得最新的错误修复。同时也会更新您的 Linux 内核和固件。

以下说明描述的是如何在您当前运行的 Raspberry Pi OS 主版本内(例如 Trixie)更新 现有 的安装。这不会将您的 Raspberry Pi OS 升级到新的主版本(例如从 Bookworm 升级到 Trixie)。关于升级操作系统的说明请参阅 升级到新的主版本

我们推荐使用 APT 来保持树莓派软件最新。您也可以使用 APT 查找特定软件包或工具、检查软件包元数据、安装或卸载特定软件包。相关说明请参阅 管理软件包

要使用 APT 以最新的修复、Linux 内核及固件更新您当前的树莓派软件,请定期运行以下命令:

  1. 更新软件包列表。 APT 在 /etc/apt/sources.list/etc/apt/sources.list.d/ 中维护可用软件源的列表;运行以下命令刷新可用软件包列表:

    sudo apt update
  2. 将已安装的软件包更新到最新版本。 既然您已经知道有哪些新版本可用,运行以下命令下载并安装更新。由于 Raspberry Pi OS 对软件包依赖的调整比 Debian 更频繁,我们推荐使用 full-upgrade 而不是标准的 upgrade

    sudo apt full-upgrade

在继续更新之前,请检查您是否有足够的空闲磁盘空间。如果 sudo apt full-upgrade 提示需要额外空间才能完成更新,您可以使用 df -h 来检查系统至少拥有那么多可用空间。然后您可以按 清理文件 中所述清理已下载的文件以释放更多空间。

更新预发布固件

rpi-update 是一个命令行工具,用于在树莓派上安装实验性或预发布版本的固件。在树莓派 4 和 5 上,它还会更新 EEPROM 引导加载程序。

rpi-update 会下载最新预发布版本的 Linux 内核、其匹配的模块、设备树文件以及最新版本的 VideoCore 固件。然后将这些文件安装到现有的 Raspberry Pi OS 安装中。

注意

预发布固件不能保证正常工作,可能会引入不稳定性,使您的系统不可靠或无法启动。

rpi-update 使用的所有源数据均来自 rpi-firmware 仓库,该仓库包含官方 固件仓库 数据的一个子集。

rpi-update 适用于开发者和工程师进行测试、开发以及特定错误修复。在大多数情况下,您不需要使用 rpi-update,仅在 Raspberry Pi 工程师推荐时才应使用;对于常规更新,我们强烈建议您使用 APT,具体参阅 更新当前的树莓派软件

  1. 备份您的系统。

  2. 运行以下命令以启动更新:

    sudo rpi-update
  3. 重启树莓派以使更改生效:

    sudo reboot

更多信息请参阅 更新 Raspberry Pi 固件

将固件降级到最新的稳定版本

如果更新到最新的预发布固件导致问题,您可以恢复到最后一个稳定版固件,然后重启以使降级生效:

sudo apt update
sudo apt install --reinstall raspi-firmware
sudo reboot

这会重新安装 Raspberry Pi OS 中官方支持的固件,恢复系统稳定性。

管理软件包

在终端中,APT 是用于在当前运行的 Raspberry Pi OS 中安装、更新和卸载软件的默认包管理器。您可通过诸如 apt-cacheapt install 等终端命令对其进行控制。

在桌面环境中,您可以使用 首选项 > 添加/删除软件 工具通过图形界面管理软件。

搜索软件

要查找特定软件包或工具,使用 apt-cache search 加关键字。这会返回名称和描述中包含该关键字的软件包列表。例如,显示所有与 raspi 相关的软件包:

apt-cache search raspi

查看软件包详细信息

要查看某个软件包的详细信息,使用 apt-cache show 加软件包名。这会显示软件包版本、大小、依赖等信息。例如,查看 raspi-config 软件包的详细信息:

apt-cache show raspi-config

安装软件包

要在树莓派上安装特定软件包,使用 sudo apt install 加软件包名:

sudo apt install <package-name>

这会返回该软件包所需的磁盘空间,并要求您确认安装。要确认安装,请输入 Y 并按 EnterReturn。要跳过确认提示并在安装时自动回答 "yes",请在命令中加上 -y

sudo apt install -y <package-name>

卸载软件包

要在树莓派上卸载特定软件包,使用 sudo apt remove 加软件包名:

sudo apt remove <package-name>

这会返回卸载该软件包将释放的磁盘空间,并要求您确认卸载。要确认,请输入 Y 并按 EnterReturn。要跳过确认提示并在卸载时自动回答 "yes",请在命令中加上 -y

sudo apt remove -y <package-name>

要完全移除软件包的所有痕迹,包括配置文件,请使用 purge 而不是 remove

sudo apt purge <package-name>

检查磁盘空间

在树莓派上安装或更新软件之前,使用以下命令检查可用存储空间:

df -h

清理文件

APT 会将下载的软件包(.deb 文件)存储在 /var/cache/apt/archives 中。在安装期间,APT 会下载这些软件包,然后将其中的文件复制到正确的安装位置。根据您已安装的软件不同,软件包文件可能会占用大量磁盘空间。使用以下命令删除旧的已下载软件包文件:

sudo apt clean

升级到新的主版本

我们强烈建议使用全新安装来升级树莓派的操作系统版本(例如从 Bookworm 升级到 Trixie),而不是在现有启动介质上进行原地升级。这涉及使用 Raspberry Pi Imager 将新的操作系统镜像烧录到新的启动介质。

以下说明要求:

  • 一台用作启动介质的新存储设备(通常为 microSD 卡),以及将其连接到电脑的方法(例如 USB 读卡器)。
  • 一台用于向新启动介质写入新操作系统镜像的电脑,并用于在启动介质之间存储和移动数据。

以下说明假设您使用 microSD 卡作为新启动介质,并使用 Raspberry Pi Imager 将新操作系统镜像安装到该启动介质。如果您使用其他类型的存储设备,请相应调整步骤。

  1. 创建当前启动介质的备份。

    注意

    此步骤将永久删除您选择使用的存储设备上的所有文件。请在继续之前将它们备份。

  2. 使用新操作系统准备新的存储设备。 在新的存储设备上,以最新版 Raspberry Pi OS 安装新的操作系统镜像。具体说明请参阅 使用 Imager 安装

  3. 复制您现有的文件和配置。 使用存储设备复制树莓派上的任何重要文件。

  4. 将新启动介质插入树莓派。 将包含新操作系统的存储设备插入树莓派。

  5. 启动树莓派。 为树莓派接通电源并开机。

将树莓派精简版系统转换为桌面版系统

可通过 apt 安装相关软件包,将轻量版系统升级为桌面版系统。.

  1. 安装首选的桌面窗口系统。
  • 安装 Wayland(推荐):
sudo apt install rpd-wayland-core
  • 安装 X 窗口系统:
sudo apt install rpd-x-core
  1. 安装树莓派主题与控制中心:
sudo apt install rpd-theme
sudo apt install rpd-preferences
  1. 添加应用程序:
sudo apt install rpd-applications
sudo apt install rpd-utilities
sudo apt install rpd-developer
sudo apt install rpd-graphics

. 为所选窗口系统添加额外功能,如截图和远程桌面支持。

  • 对于 Wayland,运行:
sudo apt install rpd-wayland-extras
  • 对于 X,运行:
sudo apt install rpd-x-extras
  1. 重启树莓派以进入桌面环境。
sudo reboot

您现在已安装构成树莓派操作系统桌面版的全部软件包。

若需恢复至树莓派操作系统精简版,可卸载这些软件包。若希望保留已安装的桌面软件包同时体验精简版功能,请使用 raspi-config 工具将树莓派设置为启动时进入命令行界面。

您也可通过Raspberry Pi主菜单选择首选项 > 推荐软件,安装Raspberry Pi OS完整版内置的推荐应用程序。

播放音频和视频

Raspberry Pi OS 预装了 VLC 媒体播放器 。您可以使用 VLC 播放视频和音频文件。VLC 在 Raspberry Pi OS 中使用硬件加速,支持许多流行的音频和视频文件格式。

VLC 媒体播放器

VLC 界面

要从 Raspberry Pi Desktop 播放音频或视频文件,请在文件管理器中双击文件。这会自动启动 VLC 播放该文件。或者,从 声音和视频 菜单,启动 VLC 媒体播放器。然后,从 媒体 菜单中选择 打开文件... ,并导航到要播放的文件。

默认情况下,Raspberry Pi OS 通过 HDMI 将音频发送到显示器。要将音频输出到耳机插孔或 USB 扬声器等不同接口,请右键单击系统托盘中的扬声器图标并选择一个选项。

vlc 命令行

您也可以通过命令行启动 VLC。在下面的示例中,我们使用了 Big Buck Bunny 的一个短片。要从 Raspberry Pi 下载该短片,请运行以下命令:

wget --trust-server-names http://rpltd.co/big-buck-bunny

要在 VLC 中通过命令行播放片段,请运行以下命令:

vlc big-buck-bunny-1080p.mp4

如需要VLC GUI在文件播放完毕后自动关闭窗口,添加--play-and-exit标志:

vlc --play-and-exit big-buck-bunny-1080p.mp4

要以全屏模式播放视频(在某些情况下播放会更流畅),请添加 --fullscreen 标记:

vlc --play-and-exit --fullscreen big-buck-bunny-1080p.mp4

使用 cvlc 在无图形界面的情况下播放媒体

如果您使用cvlc代替vlc命令,则不会显示 VLC GUI:

cvlc --play-and-exit big-buck-bunny-1080p.mp4

在 Raspberry Pi OS Lite 上播放音频和视频

与完整版的 Raspberry Pi OS 不同,Raspberry Pi OS Lite 没有预装 VLC。要在 Raspberry Pi OS Lite 上使用 VLC 播放视频和音频,请安装所需的软件包,以便在没有桌面的情况下播放:

sudo apt install --no-install-recommends vlc-bin vlc-plugin-base

在下面的示例中,我们使用了一段简短的音频片段。要从 Raspberry Pi 下载该片段,请运行以下命令:

wget --trust-server-names http://rpltd.co/startup-music

要在 VLC 中通过命令行播放该视频,请运行以下命令:

cvlc --play-and-exit computer-startup-music.mp3

指定音频输出设备

要强制将音频输出到特定设备,可将 alsa 值传递给 -A 选项以使用 https://www.alsa-project.org/wiki/Main_Page[ALSA] 音频输出,并传递 --alsa-audio-device 选项以指定音频输出设备:

cvlc --play-and-exit -A alsa --alsa-audio-device <alsa-device> computer-startup-music.mp3

用以下选项之一替换<alsa-device>占位符:

ALSA设备描述
sysdefault:CARD=Headphones耳机插孔
sysdefault:CARD=vc4hdmi带有单 HDMI 端口的设备上的 HDMI 输出(Zero 型号、CM4S、CM4 之前的计算模块和 Raspberry Pi 4 之前的旗舰型号)
sysdefault:CARD=vc4hdmi0自 Raspberry Pi 4B 开始的旗舰机型、自 CM4 开始的计算模块以及键盘机型上的 HDMI0 输出端
sysdefault:CARD=vc4hdmi1自 Raspberry Pi 4B 开始的旗舰机型、自 CM4 开始的计算模块以及键盘机型上的 HDMI1 输出端
提示

使用以下命令获取 Raspberry Pi 上所有 ALSA 设备的列表:

aplay -L | grep sysdefault

指定视频输出设备

要强制将视频输出到特定设备,请使用 --drm-vout-display 选项指定视频输出设备:

cvlc --play-and-exit --drm-vout-display <drm-device> big-buck-bunny-1080p.mp4

用以下选项之一替换 <drm-device> 占位符:

DRM设备描述
HDMI-A-1Raspberry Pi Zero 或 Raspberry Pi Model 1、2 或 3 上的 HDMI 输出; Raspberry Pi 4、5 或 400 上的 HDMI0 输出
HDMI-A-2自 Raspberry Pi 4B 开始的旗舰机型、自 CM4 开始的计算模块(包括 CM4S)以及键盘机型上的 HDMI1 输出端
DSI-1树莓派触摸显示屏或树莓派触摸显示屏 2
DSI-2对于具有多个 DSI 端口的机型(Raspberry Pi 5 之后的旗舰机型和 CM5 之后的计算模块机型)的第二个 DSI 输出口
提示

使用以下命令获取 Raspberry Pi 上所有 DRM 设备的列表:

kmsprint | grep Connector

同时指定音频和视频输出设备

你可以将音频和视频输出选项结合起来。例如,要将视频输出引向触摸屏,将音频输出引向耳机插孔,请使用上述命令的以下组合:

cvlc --play-and-exit --fullscreen --drm-vout-display DSI-1 -A alsa --alsa-audio-device sysdefault:CARD=Headphones your_video.mp4

提高流媒体播放性能

如果你有一个原始的 H.264 数据流,比如从 Raspberry Pi 摄像头模块捕获的数据流,你可以通过将数据流封装在 MP4 等容器格式中来提高 VLC 的播放性能。你可以使用 ffmpeg 将流内容转换为容器文件。例如,下面的命令将名为 video.h264 的数据流以 30fps 的速度转换为名为 video.mp4 的 MP4 容器:

ffmpeg -r 30 -i video.h264 -c:v copy video.mp4

工具集

树莓派OS中预装了几个有用的命令行实用程序。

kmsprint

kmsprint工具可用于列出树莓派所连接的显示器支持的显示模式。使用kmsprint查看连接到树莓派的显示器的详细信息,kmsprint -m查看每个显示器支持的所有显示模式的列表。您可以在Github上找到kmsprint的源代码。

vclog

vclog 可从 Arm 上运行的 Linux 中显示来自 VideoCore GPU 的日志信息。它需要以 root 用户身份运行。

sudo vclog --msg 会打印信息日志,而 sudo vclog --assert 则会打印断言日志。

vcgencmd

vcgencmd工具用于输出树莓派上的VideoCore GPU信息。您可以在GitHub上找到vcgencmd的源代码。

要获取vcgencmd所支持的所有命令的列表,请使用vcgencmd commands。下面列出了一些有用的命令及其所需的参数。

vcos

vcos命令有两个有用的子命令:

  • version显示VideoCore上固件的构建日期和版本
  • log status显示各个VideoCore固件区域的错误日志状态

version

显示 VideoCore 固件的构建日期和版本。

get_throttled

返回系统的节流状态。这是一个位模式标记。被设置的位表示以下含义:

Bit位十六进制值含义
00x1检测到欠压
10x2Arm频率限制激活
20x4节流模式激活
30x8软温度限制激活
160x10000发生过欠压
170x20000发生过Arm频率限制
180x40000发生过节流
190x80000发生过软温度限制

measure_temp

返回SoC的温度(由其内部温度传感器测量)。在树莓派4上,measure_temp pmic返回PMIC的温度。

measure_clock [时钟]

返回指定时钟的当前频率。接受以下时钟值:

时钟描述
armArm核心
coreGPU核心
h264H.264模块
isp图像传感器管线
v3d3D模块
uartUART串口
pwmPWM模块(模拟音频输出)
emmcSD卡接口
pixel像素转换模块
vecVEC模拟视频编码器
hdmiHDMI
dpiDPI显示并行接口

例如vcgencmd measure_clock arm

measure_volts [模块]

显示特定模块当前使用的电压,接受以下模块值:

模块十六进制值
coreVC4核心电压
sdram_cSDRAM核心电压
sdram_iSDRAM I/O电压
sdram_pSDRAM物理电压

otp_dump

显示SoC内部OTP(一次性可编程)存储器的内容。每个存贮器是32位值,索引范围为8到64。请参阅OTP位获得更多详细信息。

get_config [配置项|int|str]

显示指定配置设置的值:或者,指定 int (整数)或 str(字符串)以查看给定类型的所有配置项。例如,以下命令以 MB 为单位返回设备的总内存:

vcgencmd get_config total_mem

get_mem type

报告 Arm 和 GPU 可寻址的内存量。要显示 Arm 可寻址的内存量,请使用 vcgencmd get_mem arm;要显示 GPU 可寻址的内存量,请使用 vcgencmd get_mem gpu。在内存超过 1GB 的设备上,arm 参数将始终返回 1GB 减去gpu内存值,因为 GPU 固件只知道前 1GB 内存。要获得设备总内存的准确报告,请参阅上文的 total_mem 配置项和 get_config 部分。

codec_enabled [类型]

报告是否启用了指定的编解码器类型。可能的类型选项有 AGIF、FLAC、H263、H264、MJPA、MJPB、MJPG、MPG2、MPG4、MVC0、PCM、THRA、VORB、VP6、VP8、WMV9 和 WVC1。由于 Raspberry Pi 4 和 Pi 400 上的 H.265 HW 块不是 VideoCore GPU 的一部分,因此无法通过此命令访问其状态。

mem_oom

显示VideoCore内存空间中发生的任何OOM(内存不足)事件的统计信息。

mem_reloc_stats

显示VideoCore上可重定位内存分配器的统计信息。

read_ring_osc

返回环形振荡器的当前速度、电压和温度。

无障碍选项

视觉辅助

有视觉障碍的 Raspberry Pi 操作系统用户可以在推荐软件菜单中找到有用的工具。

我们提供Orca屏幕阅读器以方便 Raspberry Pi 桌面的导航。此外,我们还提供屏幕放大镜,以提高用户界面和屏幕元素的可读性。

Orca屏幕阅读器

您可以从树莓派主菜单的推荐软件入口安装Orca屏幕阅读器。或者按Ctrl + Alt + Space自动安装 Orca。

安装新映像后首次启动树莓派操作系统时,在30秒后将播放自动语音提醒。此提醒将提供有关如何安装Orca的说明。

在树莓派上使用 Python

Raspberry Pi OS 预装了 Python 3。干扰系统 Python 安装会给操作系统带来问题。安装第三方 Python 库时,请务必使用正确的软件包管理工具。

在 Linux 上,您可以通过两种方式安装 python 依赖项:

  • 使用 apt 安装预配置的系统包
  • 使用 pip 在虚拟环境中使用 Python 的依赖关系管理器安装库。
重要

从 Raspberry Pi OS Bookworm 开始,您只能使用 pip 安装到 Python 虚拟环境 (venv)。此更改由 Python 社区引入,而非 Raspberry Pi:更多信息,请参见 PEP668

使用 apt 安装 Python 软件包

通过 apt 安装的软件包是专为 Raspberry Pi 操作系统打包的。这些软件包通常经过预编译,因此安装速度更快。由于 apt 会管理所有软件包的依赖关系,因此使用此方法安装时会包含运行软件包所需的所有子依赖关系。而且 apt` 还能确保在卸载时不会破坏其他软件包。

例如,要安装支持 Raspberry Pi 的 Python 3 库 Build HAT,请运行以下命令:

sudo apt install python3-build-hat

要查找使用 apt 发布的 Python 软件包,请使用 使用 apt search。在大多数情况下,Python 软件包使用前缀 python-python3-:例如,你可以用 python3-numpy 这个名字找到 numpy 软件包。

使用 pip 安装 Python 库

Bookworm 对 pip 安装的更改

从 Raspberry Pi OS Bookworm 开始,您无法直接将库安装到系统版本的 Python 中。

取而代之的是 将库安装到虚拟环境 (venv)。要在系统级别为所有用户安装库,请使用 使用 apt 安装

尝试在全系统安装 Python 包时,会输出类似下面的错误:

$ pip install buildhat
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.

If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.

For more information visit http://rptl.io/venv

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

长期以来,Python 用户一直在处理操作系统软件包管理器(如 apt)和 Python 特定软件包管理工具(如 ipip)之间的冲突。这些冲突包括 Python- 级 API 的不兼容性和文件所有权的冲突。

从 Raspberry Pi OS Bookworm 开始,通过 pip 安装的软件包 必须安装到 Python 虚拟环境 (venv)。虚拟环境是一个容器,您可以在其中安全地安装第三方模块,这样它们就不会干扰您的系统 Python。

在虚拟环境中使用 pip

要使用虚拟环境,需要创建一个容器来存储环境。根据您使用 Python 的方式,有几种方法可以做到这一点。

许多用户会为每个 Python 项目创建单独的虚拟环境。在每个项目的根文件夹中找到虚拟环境,通常使用共享名称,如 env。在每个项目的根目录下运行以下命令来创建虚拟环境配置文件夹:

$ python -m venv env

在处理项目之前,从项目根目录运行以下命令开始使用虚拟环境:

$ source env/bin/activate

然后您会看到类似下面的提示:

(env) $

完成项目工作后,从任意目录运行以下命令离开虚拟环境:

(env) $ deactivate
创建虚拟环境

运行以下命令创建虚拟环境配置文件夹,将 <env-name> 替换为您想用于虚拟环境的名称(例如 env):

python -m venv <env-name>
提示

在文件夹名称前加上 --system-site-packages 标志,可将系统中当前安装的所有 Python 软件包预加载到虚拟环境中。

进入虚拟环境

然后,执行虚拟环境配置文件夹中的 bin/activate 脚本进入虚拟环境:

source <env-name>/bin/activate

然后,您会看到类似下面的提示:

(<env-name>) $

(<env-name>) 命令提示符前缀表示当前终端会话处于名为 <env-name> 的虚拟环境中。

要检查是否处于虚拟环境中,可使用 pip list 查看已安装软件包的列表:

(<env-name>) $ pip list
Package Version
---------- -------
pip 23.0.1
setuptools 66.1.1

该列表应该比系统 Python 中安装的软件包列表短得多。现在可以安全地使用 pip 安装软件包了。在虚拟环境中使用 pip 安装的软件包只能安装到该虚拟环境。在虚拟环境中,pythonpython3 命令会自动使用虚拟环境的 Python 版本和已安装的软件包,而不是系统 Python。

离开虚拟环境

要离开虚拟环境,请运行以下命令:

(<env-name>) $ deactivate

使用 Thonny 编辑器

我们推荐使用 Thonny 在 Raspberry Pi 上编辑 Python 代码。

默认情况下,Thonny 使用系统 Python。不过,您可以点击 Thonny 窗口右下角的解释器菜单,切换到使用 Python 虚拟环境。选择一个已配置的环境,或使用 "Configure interpreter... "配置一个新的虚拟环境。

thonny-venv

在 Python 中使用 GPIO

使用GPIO Zero库可以轻松地使用Python控制GPIO设备。该库的完整文档位于gpiozero.readthedocs.io

有关 GPIO 硬件的信息,请参阅 GPIO 硬件

LED控制

以下示例代码可控制连接到 GPIO17 的 LED:

from gpiozero import LED
from time import sleep

led = LED(17)

while True:
led.on()
sleep(1)
led.off()
sleep(1)

在像Thonny这样的IDE中运行它,LED将反复闪烁。

LED方法包括on()off()toggle()blink()

读取按钮状态

以下示例代码可读取连接到 GPIO2 的按钮的状态:

from gpiozero import Button
from time import sleep

button = Button(2)

while True:
if button.is_pressed:
print("Pressed")
else:
print("Released")
sleep(1)

按钮功能包括属性is_pressedis_held;回调when_pressedwhen_released和when_held;方法wait_for_press()wait_for_release

用按钮控制LED

以下示例代码读取连接到 GPIO2 的按钮的状态,并在按下按钮时点亮连接到 GPIO17 的 LED:

from gpiozero import LED, Button

led = LED(17)
button = Button(2)

while True:
if button.is_pressed:
led.on()
else:
led.off()

或者:

from gpiozero import LED, Button

led = LED(17)
button = Button(2)

while True:
button.wait_for_press()
led.on()
button.wait_for_release()
led.off()

或者:

from gpiozero import LED, Button

led = LED(17)
button = Button(2)

button.when_pressed = led.on
button.when_released = led.off

更进一步

关于如何使用 GPIO Zero Python 库为连接到 Raspberry Pi 的电子设备编程,您可以在 Raspberry Pi 出版社的书籍 Simple Electronics with GPIO Zero 中找到更多信息。该书让您开始使用 GPIO Zero 库,并通过构建一系列项目指导您如何使用它。


中文翻译版以英文版相同知识授权方式共享:CC-BY-SA 4.0。交流 Q群:498908352