3. 开发环境搭建:Python环境配置、PyCharm项目初始化、虚拟环境与依赖管理
好,咱们正式开始动手了。做嵌入式系统开发,尤其是心电监护仪这种医疗设备,环境搭建这一步看似基础,但坑其实不少。我见过太多人因为Python版本不对、依赖冲突,折腾半天连个串口都打不开。咱们今天就把这事一次性搞定。
3.1 Python环境配置:选对版本,少走弯路
先说Python版本。我个人习惯用Python 3.8或3.9,为什么?因为很多医疗设备相关的库,比如pyserial、pyusb、以及一些信号处理库,在3.10以上版本偶尔会出兼容性问题。你想想看,项目做一半发现某个库不支持,那得多闹心。
下载地址我就不贴了,直接去python.org下载对应版本。安装时记得勾选「Add Python to PATH」,这个很重要。我遇到过有人没勾,结果命令行里python都找不到,折腾半天。
python --version 确认版本。如果显示的是3.8.x或3.9.x,那就对了。
嗯,这里要注意:如果你电脑上已经装了其他版本的Python,建议用虚拟环境隔离。咱们后面会讲。
3.2 PyCharm项目初始化:从零开始搭架子
PyCharm是我最常用的IDE,社区版就够用,不用花钱。打开PyCharm,点击「New Project」,然后咱们一步步来。
首先,项目位置选一个你容易找到的目录,比如 D:\ECG_Monitor。项目名字就叫 ecg_monitor 吧,简洁明了。
关键一步:在「New Project」对话框里,找到「Interpreter type」,选「Virtualenv」。PyCharm会自动帮你创建一个虚拟环境。我建议把虚拟环境放在项目目录下,这样整个项目可以整体移动,方便。
.venv 或 venv,这是行业惯例。不要用中文,也不要用空格。
创建完成后,你会看到项目结构大概是这样:
ecg_monitor/
├── .venv/ # 虚拟环境目录
├── main.py # 主程序入口
└── requirements.txt # 依赖清单(稍后创建)
我曾经有个学员,把虚拟环境放在C盘系统目录下,结果重装系统后项目全废了。所以,虚拟环境一定要跟着项目走。
3.3 虚拟环境:为什么必须用?
说白了,虚拟环境就是给你的项目一个「独立的小房间」。每个项目有自己的Python解释器和第三方库,互不干扰。你想想看,如果A项目需要numpy 1.19,B项目需要numpy 1.24,没有虚拟环境,你怎么办?
激活虚拟环境的方法很简单:
- Windows:在项目目录下运行
.venv\Scripts\activate - macOS/Linux:运行
source .venv/bin/activate
激活后,命令行前面会出现 (.venv) 字样,说明你已经在虚拟环境里了。这时候安装的所有库,都只在这个项目里生效。
pip install 安装全局库!我曾经见过有人把项目依赖装到系统Python里,结果另一个项目跑起来全是版本冲突。虚拟环境就是用来隔离这些问题的。
3.4 依赖管理:用requirements.txt锁死版本
项目做大了,依赖的库会越来越多。心电监护仪项目至少需要这些:
| 库名 | 用途 | 建议版本 |
|---|---|---|
| pyserial | 串口通信,读取监护仪数据 | 3.5 |
| numpy | 信号处理,数组运算 | 1.21.0 |
| scipy | 滤波、峰值检测等算法 | 1.7.0 |
| matplotlib | 波形显示、数据可视化 | 3.5.0 |
| pyqt5 | GUI界面开发 | 5.15.6 |
安装命令很简单:
pip install pyserial==3.5 numpy==1.21.0 scipy==1.7.0 matplotlib==3.5.0 pyqt5==5.15.6
安装完成后,用这个命令生成依赖清单:
pip freeze > requirements.txt
打开 requirements.txt,你会看到类似这样的内容:
pyserial==3.5
numpy==1.21.0
scipy==1.7.0
matplotlib==3.5.0
PyQt5==5.15.6
以后换电脑或者给别人用,只需要运行 pip install -r requirements.txt,所有依赖一键安装。方便吧?
requirements.txt 一定要提交到版本控制里。
3.5 验证环境:跑一个简单的测试
环境搭好了,咱们验证一下。在 main.py 里写几行代码:
import serial
import numpy as np
import matplotlib.pyplot as plt
print("环境配置成功!")
print(f"PySerial版本: {serial.__version__}")
print(f"NumPy版本: {np.__version__}")
# 生成一个模拟的心电信号
t = np.linspace(0, 1, 1000)
ecg_signal = np.sin(2 * np.pi * 5 * t) # 模拟5Hz的心电波形
plt.plot(t, ecg_signal)
plt.title("模拟心电信号测试")
plt.xlabel("时间 (秒)")
plt.ylabel("幅值")
plt.show()
运行一下,如果能看到一个正弦波图形,说明环境搭建成功了。嗯,就这么简单。
好了,环境搭建这块就到这里。下一章咱们开始写真正的串口通信代码,读取监护仪的数据。到时候你会感谢今天把环境搭得这么干净的自己。