4. Python环境准备:安装pyserial库、检查Python版本、虚拟环境搭建

好,咱们正式开始动手。前面聊了那么多UART的理论和树莓派的硬件引脚,现在终于要回到软件层面了。我个人习惯是,不管项目大小,先把Python环境收拾利索。这一步看似基础,但我在项目中见过太多因为环境混乱导致的诡异问题——明明代码逻辑没问题,就是跑不起来,最后发现是Python版本不对,或者库装到了全局环境里,跟项目冲突。

这一章,咱们就踏踏实实把三件事搞定:检查Python版本、搭建虚拟环境、安装pyserial库。这三步走完,你的树莓派才算真正准备好迎接串口编程。

4.1 检查Python版本

树莓派官方系统(Raspberry Pi OS)默认带了Python,但版本可能不是你想要的。我建议用Python 3.7以上版本,因为pyserial在3.7+上表现最稳定,而且很多新特性(比如f-string)写起来也顺手。

打开终端,敲下面这条命令:

python3 --version

你会看到类似这样的输出:

Python 3.9.2

嗯,3.9.2,完全够用。如果你看到的是Python 2.7.x,那就要注意了——树莓派系统里可能同时存在Python 2和Python 3,python命令默认指向的是Python 2,而python3才是Python 3。我建议你始终用python3和pip3来操作,避免混淆。

注意:千万不要删除系统自带的Python 2!树莓派系统底层有些工具依赖它。你只需要确保你的开发环境用Python 3就行。

如果你发现Python版本低于3.7,比如3.5或3.6,那就需要升级了。升级方法很简单:

sudo apt update
sudo apt install python3.9

安装完成后,用python3 --version确认一下。我记得有一次帮朋友调试,他的树莓派上Python 3.5死活装不上pyserial的最新版,最后升级到3.7就一切正常了。所以,版本这事别凑合。

4.2 虚拟环境搭建

为什么要用虚拟环境?说白了,就是为了隔离。你想想看,一个树莓派上可能跑好几个项目:这个项目用pyserial 3.4,那个项目用pyserial 3.5,还有的项目可能根本不用pyserial。如果全装到全局环境里,迟早会出冲突。

我自己的习惯是:每个项目一个虚拟环境,互不干扰。这样就算某个环境搞坏了,删掉重来就是,不影响系统。

Python 3.3以上版本自带venv模块,不需要额外安装。咱们就在当前项目目录下创建一个虚拟环境:

python3 -m venv uart_env

这条命令会创建一个名为uart_env的文件夹,里面就是独立的Python环境。激活它:

source uart_env/bin/activate

激活后,你会看到终端提示符前面多了(uart_env)字样,像这样:

(uart_env) pi@raspberrypi:~ $

这就说明你现在处于虚拟环境中了。在这个环境里安装的任何Python库,都不会影响到系统全局环境。

小技巧:退出虚拟环境只需要敲 deactivate 命令。下次再进项目目录,记得先 source uart_env/bin/activate 激活。

我曾经犯过一个错误:在虚拟环境里装好了所有依赖,结果第二天打开终端忘了激活环境,直接跑代码,报了一堆"模块未找到"的错误。当时还以为是代码坏了,折腾了半天才发现是环境没激活。嗯,这种低级错误,犯过一次就不会再犯了。

4.3 安装pyserial库

pyserial是Python操作串口的标配库。它封装了底层的系统调用,让你可以用几行代码就完成串口的打开、读写、关闭操作。咱们这次课程的所有串口通信代码,都基于pyserial。

安装命令很简单,在虚拟环境激活的状态下执行:

pip install pyserial

如果你用的是Python 3,也可以用pip3:

pip3 install pyserial

安装完成后,验证一下:

python3 -c "import serial; print(serial.__version__)"

如果输出了版本号,比如3.5,那就说明安装成功了。

核心知识点:pyserial库的核心类是 serial.Serial。你只需要创建这个类的实例,指定端口、波特率等参数,就可以开始通信了。后面几章我们会详细讲它的用法。

这里有个细节要注意:pyserial在Linux系统上依赖python3-serial系统包。如果你用pip安装失败,可以试试用系统包管理器安装:

sudo apt install python3-serial

不过我个人更推荐用pip,因为能拿到最新版本。系统包管理器里的版本通常比较旧。

4.4 本章知识结构

下面这张图把咱们这一章的核心逻辑串起来了。你可以把它当作一个检查清单,看看自己有没有遗漏哪一步。

Python环境准备流程 检查Python版本 版本 ≥ 3.7? 是 → 继续下一步 否 → 升级Python 创建虚拟环境 激活虚拟环境 安装pyserial库 避坑提醒 • 始终用 python3/pip3 • 不要删系统Python 2 • 每次工作前激活环境 • pip安装失败用apt

4.5 常见问题与避坑

这一节我把自己踩过的坑整理一下,你遇到了可以直接翻到这里查。

问题 原因 解决方法
pip: command not found 系统没装pip,或者pip指向Python 2 用 pip3 代替,或者 sudo apt install python3-pip
ModuleNotFoundError: No module named 'serial' pyserial没安装,或者没在虚拟环境里安装 确认虚拟环境已激活,重新 pip install pyserial
Permission denied: '/dev/ttyAMA0' 当前用户没有串口权限 将用户加入dialout组:sudo usermod -a -G dialout $USER
虚拟环境激活后pip仍指向全局 PATH环境变量没更新 重新 source uart_env/bin/activate,或者检查shell配置文件
重要提醒:树莓派的串口设备文件通常是 /dev/ttyAMA0 或 /dev/ttyS0。如果你用的是USB转串口模块,设备文件可能是 /dev/ttyUSB0。后面几章我们会详细讲如何确认串口设备。