2. 开发环境搭建:工欲善其事,必先利其器
好,咱们正式开始动手。搭建开发环境这件事,说实话,很多新手觉得枯燥,总想跳过。但我见过太多人因为环境问题卡住一整天,最后发现是Python版本不对。所以,咱们还是老老实实把这一步走稳。
2.1 Python环境安装
我个人习惯用Python 3.8到3.11之间的版本。为什么?因为pymodbus库在3.12上我踩过坑,有些底层依赖还没完全适配。你想想看,一个SCADA系统跑着跑着突然报错,就因为Python版本太新,这多冤。
下载与安装步骤:
- 去Python官网(python.org)下载对应操作系统的安装包
- 安装时记得勾选「Add Python to PATH」——这个选项我每次都会强调,忘了勾后面会很麻烦
- 安装完成后,打开命令行(CMD或终端),输入
python --version验证
验证命令:
python --version
# 输出示例:Python 3.10.11
pip --version
# 输出示例:pip 23.0.1 from ...
嗯,这里要注意:如果你电脑上同时装了多个Python版本,可以用 py -3.10 来指定版本。我在项目现场就遇到过这种情况,工控机上预装了Python 2.7,差点把新系统搞崩。
2.2 虚拟环境配置
虚拟环境这东西,说白了就是给你的每个项目建一个独立的小房间。不同项目用不同版本的库,互不干扰。我曾经因为没隔离环境,导致一个项目需要Flask 1.x,另一个需要2.x,结果两个都跑不起来。
创建虚拟环境:
# 在项目目录下执行
python -m venv scada_env
# 激活虚拟环境(Windows)
scada_env\Scripts\activate
# 激活虚拟环境(Linux/Mac)
source scada_env/bin/activate
激活后,命令行前面会出现 (scada_env) 字样。看到这个,就说明你已经在虚拟环境里了。我个人习惯把虚拟环境放在项目根目录下,取名 venv 或 scada_env,方便识别。
小技巧: 用 pip freeze > requirements.txt 可以把当前环境的所有依赖导出。换电脑时,直接 pip install -r requirements.txt 就能一键恢复。我在给客户部署时经常用这招,省了不少事。
2.3 常用库介绍
咱们这个小型SCADA系统,核心就三个库:pymodbus、Flask、sqlite3。别小看这三个,搭一个能用的原型绰绰有余。
| 库名 | 用途 | 安装命令 |
|---|---|---|
| pymodbus | 与PLC、RTU等设备通信(Modbus协议) | pip install pymodbus |
| Flask | 搭建Web界面,展示数据 | pip install flask |
| sqlite3 | 轻量级数据库,存储历史数据 | Python内置,无需安装 |
pymodbus:这是咱们和底层设备打交道的桥梁。Modbus协议在工业现场太常见了,几乎是个PLC就支持。我遇到过最老的设备是2003年的西门子S7-200,照样用pymodbus读数据。
Flask:选它不是因为功能最强,而是因为够轻、够快。你想想看,咱们的目标是「从零搭建」,不是「从零学一个重型框架」。Flask上手快,文档好,适合快速出原型。
sqlite3:这个库是Python自带的,连安装都省了。对于小型SCADA系统,几百个测点、存个把月的数据,sqlite3完全扛得住。我在一个水处理项目里就用它存了半年的数据,查询速度依然能接受。
避坑指南: 我曾经在安装pymodbus时遇到版本冲突。原因是系统里已经装了旧版的twisted库。解决办法很简单:先升级pip,再安装pymodbus。命令如下:
pip install --upgrade pip
pip install pymodbus
2.4 IDE选择与配置
IDE这东西,说白了就是趁手的工具。我个人推荐VS Code,原因有三:免费、插件丰富、轻量。当然,你用PyCharm也行,但咱们这个课程以VS Code为例。
VS Code推荐插件:
- Python(微软官方)——语法高亮、代码补全、调试
- Pylance——类型检查,写代码时能提前发现错误
- GitLens——版本管理,方便回退
- Flask Snippets——Flask代码片段,提高效率
配置虚拟环境:
- 打开VS Code,按
Ctrl+Shift+P(Mac是Cmd+Shift+P) - 输入
Python: Select Interpreter - 选择你刚才创建的虚拟环境(路径里应该包含
scada_env)
配置好后,VS Code右下角会显示当前使用的Python解释器。我习惯看一眼确认一下,免得用错环境。
我的习惯: 在项目根目录下创建一个 .vscode 文件夹,里面放 settings.json,把虚拟环境路径写死。这样项目分享给同事时,他们打开就能直接用,不用再手动选解释器。
{
"python.defaultInterpreterPath": "./scada_env/bin/python"
}
好了,环境搭好了,咱们就可以开始写真正的代码了。下一章,我会带大家用pymodbus连一个真实的Modbus设备——当然,如果你手头没有设备,咱们也可以用模拟器。别担心,我会把两种方式都讲清楚。