第1章:开发环境与工具链搭建
各位同学好,我是老张。在风电行业摸爬滚打了十来年,从最早的SCADA监控到现在的智能运维平台,我踩过的坑比风机塔筒还高。今天咱们聊聊开发环境搭建——别小看这一步,我见过太多项目因为环境不一致,最后联调时炸成一锅粥。
说白了,环境搭建就像打地基。地基不稳,后面盖多高的楼都得塌。咱们这个《风电智能运维平台集成实战》课程,第一步就是把你的电脑武装成一个专业的风电开发工作站。
1.1 Python 3.10+ 环境配置
Python 3.10 有个新特性我特别喜欢——结构模式匹配。写风电数据处理时,match-case 语句让代码清爽多了。不过别急着装最新版,咱们做工程讲究稳定。我个人习惯用 3.10.11 这个版本,经过大量项目验证,坑少。
为什么选 Python 3.10?
- 支持最新的 pandas 2.0 和 numpy 1.24,处理风电时序数据更快
- match-case 语法让状态机代码更易读(比如风机运行模式切换)
- 类型提示增强,写大型项目时能少很多 bug
安装步骤其实很简单,但我建议你注意两点。第一,安装时记得勾选「Add Python to PATH」,不然命令行里找不到 python 命令,你想想看那得多闹心。第二,别用微软商店的版本,直接去 python.org 下载官方安装包。
我的小技巧:装完 Python 后,在终端里跑一下 python --version 和 pip --version。如果显示的不是 3.10,八成是 PATH 没配好。我曾经在一台新电脑上折腾了半小时,最后发现是之前装的 Anaconda 把路径给抢了。
1.2 Anaconda 虚拟环境管理
做风电项目最怕什么?依赖冲突。这个项目要 pandas 1.5,那个项目要 pandas 2.0,没有虚拟环境的话,你只能二选一。Anaconda 就是来解决这个问题的。
我个人习惯用 conda 而不是 venv,原因很简单——conda 连非 Python 的依赖也能管。比如我们风电项目里常用的 hdf5 库,用 conda 装就省心很多。
创建虚拟环境的命令长这样:
# 创建一个叫 wind_ops 的环境,指定 Python 3.10
conda create -n wind_ops python=3.10
# 激活环境
conda activate wind_ops
# 安装常用包
conda install numpy pandas matplotlib scipy
# 退出环境
conda deactivate
避坑指南:我曾经在项目中期发现 conda 环境里的包版本乱掉了,原因是用了 conda update --all。这个命令会一股脑把所有包升到最新,很容易出问题。建议只更新你需要的包,别手贱。
对了,还有个实用技巧。你可以把项目依赖写进 environment.yml 文件,这样团队其他人直接 conda env create -f environment.yml 就能复现你的环境。这在风电运维平台这种多人协作的项目里特别有用。
# environment.yml 示例
name: wind_ops
channels:
- conda-forge
- defaults
dependencies:
- python=3.10
- numpy=1.24
- pandas=2.0
- matplotlib=3.7
- scipy=1.10
- pip
- pip:
- wind-turbine-io==0.3.1
1.3 VS Code 与 PyCharm 配置
编辑器这东西,说白了就是个人习惯。我平时写脚本用 VS Code,写大型项目用 PyCharm。两个都讲讲,你自己选。
VS Code 配置要点
VS Code 轻量,启动快,插件生态丰富。做风电数据分析时,我常用这几个插件:
| 插件名 | 用途 | 我的评价 |
|---|---|---|
| Python | 语法高亮、智能提示 | 必装,微软官方出品 |
| Jupyter | 交互式数据分析 | 风电数据探索利器 |
| GitLens | 代码版本历史可视化 | 查谁改了我的代码,一清二楚 |
| Rainbow CSV | CSV 文件彩色显示 | 看风电 SCADA 数据时眼睛不累 |
配置 settings.json 时,我建议加上这几行:
{
"python.defaultInterpreterPath": "C:\\Users\\你的用户名\\anaconda3\\envs\\wind_ops\\python.exe",
"python.terminal.activateEnvironment": true,
"editor.formatOnSave": true,
"python.linting.enabled": true
}
嗯,这里要注意:指定 Python 解释器路径时,一定要指向你 conda 环境里的那个 python.exe。不然 VS Code 用的是系统自带的 Python,包都找不到,那还写什么代码。
PyCharm 配置要点
PyCharm 功能全,但吃内存。如果你的电脑是 16G 内存以上,可以考虑用它。配置 conda 环境很简单:
- 打开 Settings → Project → Python Interpreter
- 点击齿轮图标 → Add → Conda Environment
- 选择 Existing environment,找到 wind_ops 环境
- 搞定
我个人觉得 PyCharm 的调试器比 VS Code 好用,特别是设条件断点的时候。做风电算法调试,经常要在特定风速条件下停下来看数据,PyCharm 的条件断点功能帮了我大忙。
1.4 Git 版本控制
Git 这东西,刚开始觉得麻烦,用习惯了就离不开了。我记得刚入行时,项目代码靠 U 盘拷来拷去,有一次把旧版本覆盖了新版本,三天的工作白干了。从那以后,我逢人就安利 Git。
风电运维平台的代码管理,我建议用这个分支策略:
- main:稳定版,只能从 release 分支合并
- develop:开发版,日常开发往这合
- feature/xxx:功能分支,比如 feature/data-cleaning
- release/x.x:发布分支,测试通过后合并到 main
- hotfix/xxx:紧急修复,直接从 main 拉分支
常用的 Git 命令,我整理成了一张速查表:
| 场景 | 命令 |
|---|---|
| 克隆项目 | git clone https://github.com/xxx/wind-ops.git |
| 创建分支 | git checkout -b feature/add-scada-parser |
| 查看状态 | git status |
| 提交代码 | git add . && git commit -m "feat: 添加SCADA数据解析器" |
| 推送分支 | git push origin feature/add-scada-parser |
| 合并分支 | git checkout develop && git merge feature/add-scada-parser |
避坑指南:我曾经在 merge 时偷懒用了 git merge --no-ff 的相反操作,结果历史记录变成了一条直线,想回退某个功能都找不到节点。记住,永远用 git merge --no-ff 保留分支信息。
对了,提交信息也有讲究。我习惯用 Conventional Commits 规范:
feat: 新增风速预测模块
fix: 修复SCADA数据时间戳解析错误
docs: 更新API文档
refactor: 重构数据清洗逻辑
test: 添加单元测试覆盖
这样写的好处是,以后翻 git log 时一眼就能看出每个提交干了什么。你想想看,半年后回来改代码,看到「fix: 修复bug」这种提交信息,你肯定想骂人。
1.5 Docker 容器化部署准备
Docker 是咱们这个课程的压轴戏。为什么要在第一章就提它?因为后面的所有代码,最终都要跑在 Docker 容器里。提前把 Docker 装好,后面省事。
说白了,Docker 就是把你的应用和它需要的环境打包成一个「箱子」。这个箱子在开发电脑上能跑,在服务器上也能跑,再也不用听到「我电脑上明明能跑啊」这种话了。
安装 Docker Desktop 后,验证一下:
# 查看 Docker 版本
docker --version
# 运行 hello-world 测试
docker run hello-world
# 查看镜像列表
docker images
咱们后面会写一个 Dockerfile,把风电运维平台打包成镜像。这里先给你看个简单的例子,感受一下:
# Dockerfile 示例
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]
我的建议:现在先装好 Docker Desktop,跑通 hello-world。不用急着学太多,后面有专门的章节讲容器化部署。提前装好,是为了避免到时候卡在安装这一步。
本章小结
好了,环境搭建这块就聊到这儿。咱们把 Python 3.10 装好了,Anaconda 虚拟环境配好了,VS Code 和 PyCharm 也设置妥当了,Git 版本控制的基本流程也捋了一遍,Docker 也装上了。这一套组合拳打下来,你的开发环境已经具备了风电智能运维平台开发的基础条件。
下一章咱们开始写真正的代码——从风电 SCADA 数据采集开始。到时候你会发现,今天花时间搭环境,绝对值。