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安装
- 去Python官网下载安装包,选Windows installer (64-bit)
- 安装时一定勾选「Add Python to PATH」——我当年没勾,后面折腾了半小时
- 选「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 本章知识结构
下面这张图把整个环境搭建的流程串起来了,你可以对照着检查自己走到哪一步了: