首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >数值模拟 | 如何搭建一个数值模式评估环境

数值模拟 | 如何搭建一个数值模式评估环境

作者头像
用户11172986
发布2026-05-29 12:17:35
发布2026-05-29 12:17:35
150
举报
文章被收录于专栏:气python风雨气python风雨

数值模拟 | 如何搭建一个数值模式评估环境

师弟把方案选好了,实验跑完了,准备开始评估。第一步不是写评估脚本——是装环境。

他跑来问我:「师兄,wrf-python 装不上,cartopy 报错,METplus 到底怎么装?有没有一个从头到尾的安装流程?」

这篇就是回答这个问题。只讲一件事:把评估需要的所有 Python 包和 METplus 装好,且能跑通。

整体思路

模式评估环境跟 WRF 运行环境是两回事。WRF 在超算上跑(Linux + Intel compiler + MPI),评估在本机做(macOS/Linux/WSL + Python + 观测数据),当然这是个人场景,也可超算上搭建环境评估,流程是一样的。两者不共用同一个 conda 环境:

image
image

image

硬件与系统前提

组件

最低要求

推荐配置

CPU

4 核

8 核以上

内存

8 GB

32 GB

磁盘

200 GB

1 TB SSD

操作系统

Linux / macOS / WSL2

Ubuntu 22.04+

关于 WSL:如果你是在 Windows 上用 WSL2,当前环境就是这种模式。WSL2 内核与原生 Linux 本质相同,所有安装命令完全一样。唯一要注意的就是——不要把任何数据和 conda 环境装在 /mnt/c/ 下面。跨文件系统访问(NTFS → ext4)有显著 I/O 损失。所有东西放在 /home/你的用户名/ 下面。WSL 虚拟磁盘默认可能不足,如果空间不够,后面的「常见问题」有扩容步骤。回头看这个表格有点像steam的游戏推荐配置。

安装全流程

下面按顺序执行,每一步我都标注了装的是什么、为什么需要它。

1. Miniconda

代码语言:javascript
复制
# Linux / WSL2
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p ~/miniconda3
~/miniconda3/bin/conda init bash
exec bash

# macOS (Intel)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
bash Miniconda3-latest-MacOSX-x86_64.sh -b -p ~/miniconda3

# macOS (Apple Silicon)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
bash Miniconda3-latest-MacOSX-arm64.sh -b -p ~/miniconda3

2. 创建评估专用环境

代码语言:javascript
复制
conda create -n wrf_eval python=3.10 -y   (更高版本也可)
conda activate wrf_eval

3. 基础科学计算

代码语言:javascript
复制
conda install -c conda-forge numpy scipy pandas -y

4. 多维网格数据处理(读取 wrfout 和 NetCDF)

代码语言:javascript
复制
conda install -c conda-forge xarray netcdf4 h5py -y

5. WRF 诊断量提取(CAPE、dBZ、插值)

代码语言:javascript
复制
conda install -c conda-forge wrf-python -y

wrf-python 是核心诊断包,提供超过 30 种诊断计算:cape_2dcin_2ddbzslpsrhelpwtv……以及水平/垂直/剖面插值。它有一个 C 扩展,通过 pip 安装容易因编译器版本问题失败,推荐用 conda 装

6. 验证评分工具

代码语言:javascript
复制
conda install -c conda-forge xskillscore -y
pip install scores

xskillscore 是 xarray 原生的评分库,直接对着 DataArray 算:pearson_rrmsemaemsefractions_skill_scorescores 是澳大利亚气象局开发的额外概率评分包(CRPS、Brier Score 等),按需装。

7. 地图与绘图

代码语言:javascript
复制
conda install -c conda-forge cartopy matplotlib -y

cartopy 负责地理投影和地图底图,matplotlib 负责画线画点。这两者配合出 WRF 降水空间分布图、CAPE 对比图、垂直剖面图。

8. GRIB 数据读写(读 ERA5)

代码语言:javascript
复制
conda install -c conda-forge cfgrib eccodes -y

ERA5 从 CDS 下载的原始格式是 GRIB,cfgrib 可以直接用 xarray 接口打开。eccodes 是底层解码库。

9. METplus(官方验证工具包)

代码语言:javascript
复制
# 先装 MET C++ 核心
conda install -c conda-forge met -y

# 再装 METplus Python 封装
conda install -c conda-forge metplus -y

METplus 是 NCAR 下属 DTC 开发的行业标准验证工具。它包含:

image
image

image

工具名

作用

典型用法

grid_stat

网格到网格全场对比

WRF 降水 vs GPM

point_stat

网格到站点对比

WRF 温度 vs 气象站

mode

基于对流目标的验证

识别降水对象并比较质心/面积/强度

ensemble_stat

集合预报评分

集合平均/离散度/CRPS

series_analysis

时间序列对比

WRF vs 探空随高度变化

10. 验证安装

代码语言:javascript
复制
python -c "
import wrf, xarray, xskillscore, cartopy, cfgrib
import numpy, scipy, pandas, matplotlib, netCDF4
print('基础包       :', numpy.__version__, '|', scipy.__version__, '|', pandas.__version__)
print('网格数据     :', xarray.__version__, '|', netCDF4.__version__)
print('WRF诊断      : wrf-python', wrf.__version__)
print('评分工具     :', xskillscore.__version__)
print('地图绘图     :', cartopy.__version__, '|', matplotlib.__version__)
print('GRIB I/O     : cfgrib 已加载')
print()
print('全部导入成功 ✅')
"

# 验证 METplus
python -c "import metplus; print('METplus:', metplus.__version__)"
which grid_stat && grid_stat --version 2>&1 | head -1

环境使用

装完之后,每次使用前只需:

代码语言:javascript
复制
conda activate wrf_eval

然后在 Python 脚本里直接用上面的所有包。评估脚本怎么写,参考系列终篇。


常见安装问题

1. wrf-python pip 安装失败

wrf-python 含 C 扩展,pip 编译极易因 setuptools 版本或编译器不一致而失败。解法很简单:不要用 pip,直接用 conda。

代码语言:javascript
复制
conda install -c conda-forge wrf-python -y

2. cfgrib 读 ERA5 报 KeyError

cfgrib 依赖 eccodes 索引库。旧版 eccodes 可能不识别 ERA5 某些参数:

代码语言:javascript
复制
conda install -c conda-forge eccodes=2.32.0 -y

3. cartopy 报 GeographicLib not found

cartopy 需要自然地球海岸线数据。conda 安装时通常是自动下载的,如果缺失:

代码语言:javascript
复制
conda install -c conda-forge cartopy_offlinedata -y

4. WSL 虚拟磁盘空间不足

WSL2 的 ext4 虚拟磁盘默认可能不够用(放几个 wrfout 就满了)。先检查:

代码语言:javascript
复制
df -h /

扩容在 Windows PowerShell(管理员)中:

代码语言:javascript
复制
wsl --shutdown
diskpart
# 在 diskpart 中:
select vdisk file="%USERPROFILE%\AppData\Local\Packages\XXXXX\LocalState\ext4.vhdx"
expand vdisk maximum=512000
detach vdisk
exit

XXXXX 是你的 WSL 发行版包名。扩容后在 WSL 内执行分区调整即可。

5. WSL 下图窗显示(WSLg)

如果在 WSL 里跑 plt.show() 不出图,先检查 WSLg:

代码语言:javascript
复制
echo $DISPLAY   # 应输出 :0 或 :1

如果为空(旧版 Windows 10),装 VcXsrv 后在 WSL 中 export DISPLAY=$(hostname).local:0.0。不想看图窗的话,在脚本里把所有 plt.show() 改成 plt.savefig() 就行。

6. conda solver 缓慢(libarchive.so 报错)

安装时如果看到:

代码语言:javascript
复制
Error while loading conda entry point: conda-libmamba-solver
(libarchive.so.19: cannot open shared object file)

这不影响 conda 工作——回退到经典 solver 也能装,但很慢。修复:

代码语言:javascript
复制
conda install -n base conda-libmamba-solver -c conda-forge -y

师弟按这个流程装完,激活环境跑了个 import wrf; print('ok'),截屏发给我:「师兄,全程没报错!」

我说这就对了。环境搭建就是一次性基础设施投入,半天装好,后面两年所有 WRF 评估项目都不用再碰包管理的问题。接下来你就可以直接写评估脚本了。


*系列后篇:[数值模式 | WRF 批量试验怎么评估],敬请期待

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气python风雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数值模拟 | 如何搭建一个数值模式评估环境
    • 整体思路
    • 硬件与系统前提
    • 安装全流程
      • 1. Miniconda
      • 2. 创建评估专用环境
      • 3. 基础科学计算
      • 4. 多维网格数据处理(读取 wrfout 和 NetCDF)
      • 5. WRF 诊断量提取(CAPE、dBZ、插值)
      • 6. 验证评分工具
      • 7. 地图与绘图
      • 8. GRIB 数据读写(读 ERA5)
      • 9. METplus(官方验证工具包)
      • 10. 验证安装
    • 环境使用
    • 常见安装问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档