树莓派用 Python 在多个输出设备上播放多个声音文件

本文介绍了如何在树莓派上使用Python在多个输出设备上同时播放声音文件,涉及硬件配置如功放板、USB声卡等,并使用threading和argparse模块实现多线程播放和命令行参数解析。参考链接提供详细步骤。

准备工作
功放板:https://www.amazon.com/gp/product/B07J4P4FR9
USB 声卡:https://item.taobao.com/item.htm?id=577563502441
DC/DC变压器:https://www.amazon.com/gp/product/B01GJ0SC2C
USB HUB:https://www.amazon.com/gp/product/B076YPRTKF/
DC 接线端子:https://www.amazon.com/gp/product/B06XRT5C2Q
**添加声音设备
声音文件
threading模块(每一个对象代表一个线程 https://blog.youkuaiyun.com/goldxwang/article/details/77838072)
argparse模块(argparse是python用于解析命令行参数和选项的标准模块 https://www.2cto.com/kf/201412/363654.html
https://yq.aliyun.com/articles/567308)
pathlib.py模块 (内置pathlib库的常用属性和方法 https://www.cnblogs.com/sigai/p/8074329.html)

argparse 用于将命令行字符串解析为Python对象的对象 添加关注的命令行参数和

<think>我们参考了引用[2]中关于树莓派默认Python版本切换的方法,使用update-alternatives命令来管理多个Python版本。同时,考虑到树莓派5(RaspberryPi5)是最新的硬件,运行的是最新的RaspberryPi OS(基于DebianBookworm),该系统默认安装了Python3.11。但用户可能还需要安装其他版本的Python,比如3.9(为了兼容PySide2)或者3.8等。步骤:1.安装多个Python版本2.使用update-alternatives设置这些版本的优先级,以便切换3.使用update-alternatives命令切换系统默认的Python版本(注意:改变系统默认Python版本可能会影响系统组件,建议在虚拟环境中使用不同版本)然而,需要注意的是,在树莓派上,系统的一些组件可能依赖于特定的Python版本(比如默认的Python3.11),所以我们通常不建议直接替换系统的默认Python版本,而是使用虚拟环境(venv)或者工具(如pyenv)来管理多版本。但是,如果用户确实需要在系统级别切换(例如为了全局使用),我们可以按照以下步骤操作。另外,引用[3]中提到了在编译OpenCV时指定Python版本的方法,这也说明了在树莓派上指定Python版本的重要性。因此,我们将提供两种方法:方法一:使用update-alternatives切换系统默认Python版本(适用于高级用户,谨慎操作)方法二:使用pyenv管理多个Python版本(推荐,更安全)由于树莓派5是ARMv8架构,编译安装Python可能会比较慢,所以优先考虑通过apt安装预编译的版本。根据RaspberryPi OS的仓库,目前可以通过apt安装的Python版本包括:3.9,3.10,3.11(默认已安装3.11)。步骤:方法一:使用update-alternatives切换系统默认Python3版本1.安装其他版本的Python,例如Python3.9和Python3.10:```bashsudo aptupdatesudoapt installpython3.9python3.9-dev python3.9-venvsudo aptinstall python3.10 python3.10-devpython3.10-venv```2.将已安装的Python版本添加到update-alternatives中:```bashsudoupdate-alternatives--install/usr/bin/python3 python3 /usr/bin/python3.91sudo update-alternatives --install /usr/bin/python3python3/usr/bin/python3.102sudoupdate-alternatives--install/usr/bin/python3 python3 /usr/bin/python3.113```这里的数字是优先级,数字越大优先级越高。默认情况下,系统会使用优先级最高的版本(即3.11)。但我们也可以通过配置选择。3.切换Python3版本:```bashsudoupdate-alternatives--configpython3```然后从列表中选择一个版本。4.验证:```bashpython3 --version```注意:这种方法会改变系统默认的Python3解释器,可能会影响系统脚本(因为有些系统脚本使用#!/usr/bin/python3)。因此,建议仅在用户明确需要全局切换时使用。方法二:使用pyenv(推荐)pyenv可以在用户级别安装和管理多个Python版本,不会影响系统默认的Python环境。1.安装pyenv的依赖:```bashsudoapt updatesudoapt install-ymake build-essentiallibssl-dev zlib1g-dev\libbz2-devlibreadline-devlibsqlite3-dev wget curlllvm\libncursesw5-devxz-utilstk-devlibxml2-devlibxmlsec1-devlibffi-devliblzma-dev```2.安装pyenv:```bashcurlhttps://pyenv.run| bash```3.将pyenv添加到shell的配置文件中(如~/.bashrc):```bashecho'exportPATH="$HOME/.pyenv/bin:$PATH"'>> ~/.bashrcecho'eval"$(pyenvinit --path)"' >>~/.bashrcecho 'eval "$(pyenv virtualenv-init-)"' >>~/.bashrcsource~/.bashrc```4.安装所需的Python版本(例如3.9.18):```bashpyenv install3.9.18```注意:树莓派5是ARMv8架构,pyenv会从源码编译Python,所以需要较长时间。5.设置全局或局部Python版本:-全局设置(影响用户的所有目录):```bashpyenv global3.9.18```-局部设置(只在当前目录生效):```bashpyenvlocal3.9.18```6.验证:```bashpython--version```使用pyenv的优点是可以在不同项目目录使用不同的Python版本,而且不会干扰系统Python。根据引用[1],树莓派5上Wayland还在优化中,所以图形界面可能会有一些限制,但命令行操作不受影响。总结:推荐使用pyenv来管理多个Python版本,避免系统级别的冲突。相关问题:1.如何为不同的Python版本创建虚拟环境?2.在树莓派5上编译安装Python时遇到错误如何解决?3.如何卸载通过pyenv安装的Python版本?</think>### 如何在树莓派5上安装和切换多个Python版本 以下是两种推荐方法,结合系统级管理和虚拟环境,确保兼容性和安全性: --- #### **方法1:使用 update-alternatives 系统级管理(推荐)** **适用场景**:需要全局切换默认Python版本时 **优势**:无需重复安装依赖,系统命令直接生效 1. **安装多版本Python** 安装Python 3.9(兼容PySide2)和Python 3.11(系统默认): ```bash sudo apt update sudo apt install python3.9 python3.9-dev python3.9-venv ``` 2. **注册版本到系统** ```bash # 注册Python 3.9 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1 # 注册Python 3.11(系统默认) sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2 ``` > 末尾数字为优先级(越大优先级越高) 3. **切换Python版本** ```bash sudo update-alternatives --config python3 ``` 出现交互菜单: ``` There are 2 choices for the alternative python3 (providing /usr/bin/python3). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/python3.11 2 auto mode 1 /usr/bin/python3.11 2 manual mode 2 /usr/bin/python3.9 1 manual mode Press <enter> to keep the current choice[*], or type selection number: 2 ``` 输入对应序号即可切换 4. **验证版本** ```bash python3 --version # 应显示 Python 3.9.x ``` > **注意**:系统组件依赖Python时慎用,建议优先使用虚拟环境[^2] --- #### **方法2:使用 pyenv 用户级管理(更安全)** **适用场景**:按项目隔离环境,避免系统冲突 **优势**:无需sudo权限,支持任意Python版本(包括非APT版本) 1. **安装依赖和pyenv** ```bash # 安装编译依赖 sudo apt install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev libffi-dev # 安装pyenv curl https://pyenv.run | bash ``` 2. **配置环境变量** 在 `~/.bashrc` 末尾添加: ```bash export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv virtualenv-init -)" ``` 生效配置: ```bash source ~/.bashrc ``` 3. **安装多版本Python** ```bash # 安装Python 3.9.18 pyenv install 3.9.18 # 安装Python 3.11.6 pyenv install 3.11.6 ``` 4. **切换版本** ```bash # 全局切换(影响所有终端) pyenv global 3.9.18 # 局部切换(仅当前目录) pyenv local 3.11.6 ``` 5. **验证** ```bash python --version # 显示当前激活版本 ``` --- #### **版本切换场景示例** | 场景 | 推荐方法 | 命令示例 | |--------------------------|------------------|------------------------------| | 运行PySide2应用 | pyenv局部切换 | `pyenv local 3.9.18` | | 系统脚本开发 | update-alternatives | `sudo update-alternatives --config python3` | | 临时测试新版本 | pyenv shell | `pyenv shell 3.11.6` | > **关键提示**: > 1. 使用 `python3 -m venv` 创建虚拟环境时,虚拟环境的Python版本继承自当前激活版本 > 2. 树莓派5的Wayland支持仍在优化中,GUI应用建议优先使用X11[^1] --- #### **验证多版本共存** ```bash # 查看所有已安装版本 pyenv versions # 输出示例: * system (set by /home/pi/.pyenv/version) 3.9.18 3.11.6 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值