3. 开发环境搭建:打好地基才能盖高楼
说实话,我见过太多项目死在环境搭建这一步。不是代码写不出来,而是环境配了一周还没跑通。咱们做数字孪生储能仿真,底层环境就是地基。地基不稳,后面全是坑。
这一章,我带你一步步把操作系统、Python/Node.js、Docker、Git 全部搞定。嗯,跟着我的节奏来,别跳步。
3.1 操作系统配置:选对系统,少走弯路
我个人习惯用 Ubuntu 22.04 LTS 作为开发机。为什么?因为 Docker 在 Linux 上跑得最顺,而且储能仿真涉及的大量底层库(比如 libmodbus、socketCAN)在 Ubuntu 上几乎都是 apt-get 一键搞定。
如果你用的是 Windows,我建议装个 WSL2。我在项目中遇到过有人直接在 Windows 上跑仿真,结果串口通信延迟高得离谱,排查了两天才发现是驱动层的问题。换成 WSL2 后,问题直接消失。
系统初始化清单:
- 更新软件源:
sudo apt update && sudo apt upgrade -y - 安装基础工具:
sudo apt install build-essential curl wget git vim net-tools -y - 配置时区:
sudo timedatectl set-timezone Asia/Shanghai - 开启 SSH 服务:
sudo systemctl enable ssh && sudo systemctl start ssh
小技巧: 我习惯把 ~/.bashrc 里加上 alias ll='ls -alF' 和 alias ..='cd ..'。别看这不起眼,每天能省下几十次按键。
3.2 Python 环境安装:虚拟环境是底线
Python 版本我推荐 3.10 或 3.11。3.12 虽然新,但有些储能相关的库(比如 pymodbus、opcua-asyncio)还没完全适配。你想想看,仿真跑着跑着突然报个 ImportError,多闹心。
安装方式很简单:
# 安装 Python 3.10
sudo apt install python3.10 python3.10-venv python3.10-dev -y
# 安装 pip
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
# 配置国内镜像源(加速下载)
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
EOF
警告: 千万不要在系统级 Python 里直接 pip install!我曾经有一次把系统自带的 Python 库搞坏了,结果 Ubuntu 的桌面环境都启动不了。老老实实用虚拟环境:
python3.10 -m venv venv
source venv/bin/activate
3.3 Node.js 环境安装:版本管理用 nvm
Node.js 主要用于前端界面和部分实时通信模块。我建议用 nvm 管理版本,而不是直接装系统包。为什么?因为项目可能同时需要 Node 16 和 Node 18,nvm 可以随时切换。
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 重新加载 shell 配置
source ~/.bashrc
# 安装 Node.js 18 LTS
nvm install 18
nvm use 18
node -v # 确认版本
避坑指南: 我曾经在 CI/CD 流水线上遇到过 npm 安装超时的问题。后来统一配置了淘宝镜像源,世界清净了:
npm config set registry https://registry.npmmirror.com
3.4 Docker 容器化部署:一次构建,到处运行
Docker 是咱们这个平台的核心。储能仿真涉及多个服务——数据采集、模型计算、前端展示、数据库。用 Docker Compose 一键启动所有服务,比手动一个个启动靠谱一百倍。
安装步骤:
# 安装 Docker Engine
curl -fsSL https://get.docker.com | bash
# 将当前用户加入 docker 组(避免每次 sudo)
sudo usermod -aG docker $USER
# 安装 Docker Compose(独立二进制)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 配置镜像加速器
sudo mkdir -p /etc/docker
cat | sudo tee /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
sudo systemctl restart docker
项目初期 Docker Compose 模板:
version: '3.8'
services:
influxdb:
image: influxdb:2.7
ports:
- "8086:8086"
volumes:
- ./data/influxdb:/var/lib/influxdb2
redis:
image: redis:7-alpine
ports:
- "6379:6379"
simulator:
build: ./simulator
depends_on:
- influxdb
- redis
environment:
- SIM_MODE=development
3.5 Git 版本控制初始化:从第一天就规范
嗯,这里我要多说两句。我见过太多团队,项目写了一半才想起来用 Git,结果历史记录一团糟。咱们从第一天就初始化好。
# 初始化仓库
cd /path/to/your/project
git init
# 配置用户信息(全局一次即可)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 创建 .gitignore 文件
cat > .gitignore << EOF
# Python
__pycache__/
*.pyc
venv/
*.egg-info/
# Node
node_modules/
dist/
# Docker
data/
# IDE
.vscode/
.idea/
# 环境变量
.env
EOF
# 首次提交
git add .
git commit -m "chore: init project structure"
我的分支策略建议:
| 分支 | 用途 |
|---|---|
main | 生产就绪代码,只接受 PR 合并 |
develop | 日常开发集成,所有功能分支合并到这里 |
feature/* | 新功能开发,比如 feature/bms-simulator |
hotfix/* | 紧急修复,直接从 main 拉出 |
切记: 永远不要把 .env 文件提交到 Git 仓库!里面可能包含数据库密码、API Key 等敏感信息。我见过有人把生产环境的密钥传到了 GitHub 公开仓库,后果...嗯,你懂的。
好了,环境搭建这块就这些。别嫌啰嗦,把这些步骤走一遍,后面写代码的时候你会感谢现在的自己。下一章咱们开始搭仿真平台的核心骨架。