3. Python环境搭建与串口库安装

好了,到了真正动手的时候了。这一章我们先把开发环境搭起来。别小看这一步,我见过太多人卡在环境配置上,代码写好了却跑不起来,那才叫憋屈。

咱们的目标很明确:装好Python,建一个干净的虚拟环境,再把pyserial库装上。Windows和Linux我都会讲到,你根据自己系统来就行。

3.1 Python版本选择与安装

先说版本。我个人习惯用Python 3.8到3.11之间的版本。为什么?因为这些版本对pyserial支持最稳定,而且第三方库的兼容性也最好。Python 3.12刚出的时候我试过,有些老库还没跟上,踩了几个坑之后我就老实了。

推荐版本:Python 3.8.10 或 3.10.11

这两个版本都是长期维护版,bug少,生态好。

Windows安装

  1. 去Python官网下载安装包,选Windows installer (64-bit)
  2. 安装时一定勾选「Add Python to PATH」——我当年没勾,后面折腾了半小时
  3. 选「Install Now」就行,默认路径是 C:\Users\你的用户名\AppData\Local\Programs\Python\Python310

Linux安装

Linux就简单多了。Ubuntu/Debian系用:

sudo apt update
sudo apt install python3 python3-pip python3-venv -y

CentOS/RHEL系用:

sudo yum install python3 python3-pip -y

装完验证一下:

python3 --version
pip3 --version

看到版本号就说明成了。

3.2 Python虚拟环境——为什么必须用?

你想想看,一个项目用pyserial 3.5,另一个项目用pyserial 4.0,装在一起不就打架了吗?虚拟环境就是干这个的——每个项目有自己的小天地,互不干扰。

我曾经在一个服务器上同时维护三个串口工具项目,没用虚拟环境,结果升级一个库把另外两个搞崩了。从那以后,我每个项目必建虚拟环境,成了铁律。

创建虚拟环境

打开终端,进到你的项目目录,然后:

# Windows / Linux 通用
python -m venv venv

这条命令会在当前目录下生成一个 venv 文件夹,里面就是独立的Python环境。

小技巧:我习惯把虚拟环境文件夹命名为 venv 或 .venv,前者更常见,后者加了点是隐藏文件夹,看着干净些。

激活虚拟环境

系统 命令
Windows (CMD) venv\Scripts\activate
Windows (PowerShell) venv\Scripts\Activate.ps1
Linux / macOS source venv/bin/activate

激活后,终端前面会出现 (venv) 字样,说明你已经在虚拟环境里了。这时候装什么库都不会影响到系统全局。

3.3 pyserial库安装

pyserial是Python操作串口的标配库,没有之一。它封装了底层的系统调用,让我们用几行代码就能收发数据。

激活虚拟环境后,直接装:

pip install pyserial

验证安装:

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

如果能打印出版本号,比如 3.5,就说明装好了。

注意:不要装成 serial 这个包!有个同名库是做序列化的,跟串口半毛钱关系没有。我刚开始就装错过,查了半天为什么打不开串口……

3.4 系统权限配置

这是最容易卡住的一步。Windows和Linux的权限机制不一样,咱们分开说。

Windows权限配置

Windows下,只要你的用户有管理员权限,一般就能直接访问串口。但有个坑:某些USB转串口设备需要装驱动。

  • CH340/CH341:最常见的便宜方案,去官网下驱动
  • FT232:FTDI家的芯片,Windows 10/11通常自动识别
  • CP2102:Silicon Labs的,也需要手动装驱动

装完驱动后,在「设备管理器」→「端口(COM和LPT)」里能看到对应的COM口编号,比如COM3、COM5。

我的习惯:把常用的COM口记下来,或者给设备改个容易认的名字。项目多了你就知道这有多省事了。

Linux权限配置

Linux下串口设备通常属于 dialout 组。普通用户直接访问会报权限错误:

PermissionError: [Errno 13] Permission denied: '/dev/ttyUSB0'

解决办法有两个:

方法一:把用户加到 dialout 组(推荐)

sudo usermod -a -G dialout $USER

执行完后注销重新登录,或者重启一下。之后就能直接访问串口了。

方法二:临时用 sudo 运行(不推荐)

sudo python your_script.py

为什么我不推荐?因为sudo下装的库和普通用户可能不一致,而且权限太大,不小心删了系统文件就麻烦了。

3.5 完整环境验证

装完所有东西后,我们来写个简单的脚本,确认整个链路是通的:

import serial
import sys

# 列出所有可用串口
import serial.tools.list_ports
ports = serial.tools.list_ports.comports()
for port in ports:
    print(f"发现串口: {port.device} - {port.description}")

# 尝试打开第一个串口(如果有的话)
if ports:
    try:
        ser = serial.Serial(
            port=ports[0].device,
            baudrate=115200,
            timeout=1
        )
        print(f"成功打开 {ser.portstr}")
        ser.close()
    except Exception as e:
        print(f"打开失败: {e}")
else:
    print("未发现串口设备,请检查连接")

这段代码会扫描系统里的串口设备,并尝试打开第一个。如果能看到「成功打开」的提示,恭喜你,环境搭建完成了。

3.6 本章知识结构

下面这张图把整个环境搭建的流程串起来了,你可以对照着检查自己走到哪一步了:

Python串口开发环境搭建流程 ① 安装Python ② 创建虚拟环境 ③ 安装pyserial ④ 配置系统权限 ⑤ 运行验证脚本 常见问题 • Python未加入PATH • 虚拟环境未激活 • 装错serial库 • Linux未加dialout组 • Windows缺少驱动 • 串口被其他程序占用 • 权限不足拒绝访问 • USB线接触不良 • 波特率不匹配 • 设备未上电 Windows 勾选Add to PATH 安装USB驱动 Linux apt/yum安装 加入dialout组