小岳
2026-10-28
点 赞
0
热 度
0
评 论
0

从零搭一套电力系统仿真环境:Python + pandapower 保姆级安装

  1. 首页
  2. 电气知识
  3. 从零搭一套电力系统仿真环境:Python + pandapower 保姆级安装

文章摘要

摸鱼小助手

从零搭一套电力系统仿真环境:Python + pandapower 保姆级安装

这篇写给完全没写过代码的电气同行。目标是 40 分钟内,在你的电脑上跑出第一张潮流计算结果表。 全程不需要 GPU、不需要服务器、不需要联网权限之外的任何东西。

一、先说清楚要装什么、为什么要装

我们要用的核心工具是 pandapower——一个开源的电力系统计算库,德国卡塞尔大学和 Fraunhofer IEE 主导开发,能算潮流、短路、最优潮流,还能画网络图。

它长得不像 PSS/E、DIgSILENT 那样有界面,它是代码库:你写几行 Python 描述电网,它返回一张表。好处是:

  • 免费,没有 license 服务器,装在自己电脑上就能跑
  • 可批量:一个脚本算 500 个工况,不用手点 500 次
  • 可复现:脚本发给同事,他跑出来和你一模一样
  • 和 Excel/pandas 打通:结果直接导出,接着做报表

代价是:你得先装 Python。这篇就是把这段路铺平。

整个链路是这样的:

Python(解释器) → venv(虚拟环境,隔离依赖) → pandapower(电力计算库) → 你的脚本

二、装 Python(Windows)

  1. 打开官网下载页:https://www.python.org/downloads/
  2. 点黄色的 Download Python 3.x.x 按钮(3.10–3.12 都行,不要用 3.13,部分科学计算轮子在旧版本上更稳)
  3. 双击安装包,第一个界面务必勾上 Add python.exe to PATH——这一步没勾,后面 90% 的"命令找不到"都从这来
  4. 点 Install Now,等进度条走完,最后点 Close

验证

按 Win + R,输入 cmd 回车,在黑窗口里敲:

python --version

看到类似这样就是成功:

Python 3.12.4

如果提示 'python' 不是内部或外部命令,两种补救:

  • 重装一次,记得勾 PATH(最省事)
  • 或者用 py --version 试试,Windows 的 Python 启动器通常还在

三、装 Python(macOS)

macOS 自带的是 Python 3.9,能用但不建议直接用系统的。推荐两种方式二选一:

方式 A:官网安装包(推荐小白)

  1. https://www.python.org/downloads/ 下载 macOS 的 .pkg
  2. 双击一路下一步
  3. 打开"终端"(Command + 空格 输入 Terminal),敲:
python3 --version

方式 B:Homebrew

brew install python@3.12

macOS 里命令是 python3,不是 python。本文后面所有命令,macOS 用户把 python 换成 python3、pip 换成 pip3 即可。

四、建一个干净的虚拟环境(关键一步)

为什么要 venv:不同项目依赖不同版本的库,全装到系统 Python 里迟早打架。venv 就是给每个项目一个独立的"抽屉"。

1. 建项目文件夹

Windows:

mkdir C:\power
cd C:\power

macOS:

mkdir -p ~/power && cd ~/power

2. 建虚拟环境

python -m venv .venv

(macOS:python3 -m venv .venv)

这一步会在当前目录生成一个 .venv 文件夹,里面是一份独立的 Python。看不到这个文件夹说明上一步失败了,先解决再往下走。

3. 激活它

Windows(cmd):

.venv\Scripts\activate

Windows(PowerShell):

.venv\Scripts\Activate.ps1

macOS / Linux:

source .venv/bin/activate

激活成功的标志:命令行前面多了一个 (.venv)。

(.venv) C:\power>

PowerShell 报"禁止运行脚本"? 说明执行策略拦了。用管理员 PowerShell 跑一次 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned,输入 Y 确认,重开窗口再激活。

五、装 pandapower

pip install pandapower

国内网络慢的话加个镜像(清华源):

pip install pandapower -i https://pypi.tuna.tsinghua.edu.cn/simple

会顺带装上 pandas、numpy、scipy、networkx、matplotlib——这些是它的计算和画图依赖,看到它们被下载是正常的,别以为是装错了。

装完验证:

python -c "import pandapower as pp; print(pp.__version__)"

输出一个版本号(比如 3.x.x)就成功。看不到版本号但有警告,通常只是提示某个可选依赖缺失,不影响潮流计算。

六、跑通第一个算例:5 节点配电网

新建文件 first_run.py,把下面整段复制进去(这是官方教程里最简单的入门例子,我加了中文注释):

import pandapower as pp

# 1) 建一个空网络
net = pp.create_empty_network()

# 2) 建母线(节点):外部电网接入点 + 3 个负荷点
bus_hv = pp.create_bus(net, vn_kv=10.0, name="10kV母线")     # 高压侧
bus_l1 = pp.create_bus(net, vn_kv=0.4, name="负荷1")          # 低压侧
bus_l2 = pp.create_bus(net, vn_kv=0.4, name="负荷2")
bus_l3 = pp.create_bus(net, vn_kv=0.4, name="负荷3")

# 3) 外部电网(相当于上级变电站,给定电压)
pp.create_ext_grid(net, bus=bus_hv, vm_pu=1.0, name="上级电网")

# 4) 变压器 10kV/0.4kV,容量 630 kVA
pp.create_transformer_from_parameters(
    net, hv_bus=bus_hv, lv_bus=bus_l1,
    sn_mva=0.63, vn_hv_kv=10.0, vn_lv_kv=0.4,
    vk_percent=4.0,          # 短路阻抗 4%
    vkr_percent=1.0,         # 短路电阻 1%
    pfe_kw=1.2, i0_percent=0.3,
    name="T1 630kVA"
)

# 5) 三条低压电缆,把负荷点串起来
pp.create_line_from_parameters(
    net, from_bus=bus_l1, to_bus=bus_l2, length_km=0.15,
    r_ohm_per_km=0.206, x_ohm_per_km=0.080, c_nf_per_km=200,
    max_i_ka=0.29, name="L1-L2"
)
pp.create_line_from_parameters(
    net, from_bus=bus_l2, to_bus=bus_l3, length_km=0.12,
    r_ohm_per_km=0.206, x_ohm_per_km=0.080, c_nf_per_km=200,
    max_i_ka=0.29, name="L2-L3"
)

# 6) 三个负荷
pp.create_load(net, bus=bus_l1, p_mw=0.05, q_mvar=0.015, name="负荷1")
pp.create_load(net, bus=bus_l2, p_mw=0.08, q_mvar=0.025, name="负荷2")
pp.create_load(net, bus=bus_l3, p_mw=0.06, q_mvar=0.018, name="负荷3")

# 7) 算潮流(牛顿-拉夫逊法,默认)
pp.runpp(net)

# 8) 看结果
print("===== 母线电压 =====")
print(net.res_bus[["vm_pu", "va_degree"]].round(4))

print("\n===== 线路负载 =====")
print(net.res_line[["loading_percent", "p_from_mw", "q_from_mvar"]].round(3))

print("\n===== 变压器负载 =====")
print(net.res_trafo[["loading_percent", "p_hv_mw"]].round(3))

运行

python first_run.py

你应该看到什么

===== 母线电压 =====
        vm_pu  va_degree
0    1.000000     0.0000
1    0.981234    -0.5123
2    0.976512    -0.6215
3    0.974021    -0.6732

===== 线路负载 =====
   loading_percent  p_from_mw  q_from_mvar
0           28.512      0.083     0.025
1           21.334      0.062     0.018

上面的数字是示意,具体值取决于你填的参数。真正重要的是:电压在 0.97 左右(合理),负荷 100% 以下(没超载),没有报错。

到这里,环境就通了。你已经能算潮流了。

七、想画图?加一步

pip install matplotlib

在脚本末尾加:

import matplotlib.pyplot as plt
pp.plotting.simple_plot(net, show_plot=False)
plt.savefig("network.png", dpi=150, bbox_inches="tight")
print("图已保存到 network.png")

network.png 就是你的电网单线示意图。

八、六个最常见的报错,对号入座

报错 原因 处理
'python' 不是内部或外部命令 装 Python 时没勾 PATH 重装并勾选,或用 py
'pip' 不是内部或外部命令 同上 / venv 没激活 先激活 venv,看命令行有没有 (.venv)
ModuleNotFoundError: No module named 'pandapower' 装到了系统 Python,跑的是 venv 的 激活 venv 后重装
Could not find a version that satisfies... 网络问题或 Python 版本太新/太旧 换清华源;Python 换 3.10–3.12
SSLError / 证书错误 公司网络代理拦截 换网络,或公司代理配置 pip config set global.proxy
runpp() 报 Newton 不收敛 参数不合理(比如负荷大得离谱、变压器变比写反) 先 pp.runpp(net, init="flat"),再检查参数单位

单位是新手第一大坑:pandapower 里功率是 MW / Mvar,不是 kW;长度是 km,不是 m;电阻是 Ω/km。填 0.05 才是 50 kW,填 50 它会算成 50 MW,然后告诉你"不收敛"。

九、下一步可以干什么

环境有了,下面这些都能直接上手:

  1. 批量算工况:把负荷乘 0.6/0.8/1.0,循环出三组电压,看最恶劣情况
  2. 算短路:pp.shortcircuit.calc_sc(net),出短路电流
  3. N-1 分析:断开一条线路,看有没有电压越限
  4. 导出 Excel:net.res_bus.to_excel("result.xlsx")

后面几篇我会把短路、N-1、报表各写一遍。

十、出处与参考

本文所有命令均在 Windows 11 + Python 3.12、macOS 14 + Python 3.12 上实测过。库版本迭代较快,若某个参数名有变化,以官方文档为准。


本站站长,主角光环,怎么滴,你还想攻击你的站长吗,真是好big的狗胆

小岳

intp 逻辑家

站长

不具版权性
不具时效性

文章内容不具时效性。若文章内容有错误之处,请您批评指正。

目录

欢迎来到摸鱼干货栈,这里为您提供开源与摸鱼源码

10 文章数
6 分类数
0 评论数
23标签数
最近评论