Windows 环境下 Isaac Lab 运行 RSL-RL 训练时 Windows fatal exception / DLL load failed 的解决记录

Windows 环境下 Isaac Lab 运行 RSL-RL 训练时 Windows fatal exception / DLL load failed 的解决记录 Isaac Lab 运行 RSL-RL 训练时 Windows fatal exception / DLL load failed 的解决记录前言最近在 Windows 上按照教程安装 Isaac Lab并运行官方示例任务python scripts/reinforcement_learning/rsl_rl/train.py --taskIsaac-Ant-v0启动 Isaac Sim 后程序很快崩溃日志中出现Windows fatal exception、DLL load failed等错误。本文记录一次完整的定位和修复过程。我的环境大致如下Windows 11 Isaac Sim 5.1 Isaac Lab Python 3.11 CUDA 12.8 / 12.9 驱动环境 NVIDIA RTX 4070 Laptop GPU问题现象运行训练命令cd C:\Users\Lucky\IsaacLab python scripts/reinforcement_learning/rsl_rl/train.py --taskIsaac-Ant-v0程序启动 Isaac Sim 后崩溃日志中关键错误类似Windows fatal exception: code 0xc0000139后面还能看到Failed to import python module isaaclab_tasks ImportError: DLL load failed while importing _errors根据调用栈可以看到错误链大致是isaaclab_tasks - isaaclab - h5py - h5py._errors也就是说真正失败的位置是h5py的原生 DLL 模块加载失败。原因分析先检查当前环境里的h5py版本C:\Users\Lucky\miniconda3\envs\env_isaaclab\python.exe -c import h5py; print(h5py.__version__, h5py.version.hdf5_version)输出为3.16.0 2.0.0也就是说当前安装的h5py 3.16.0自带的是HDF5 2.0.0。但 Isaac Sim 5.1 自带的 sensor 相关插件中也包含hdf5.dll其版本是HDF5 1.14.6这就产生了冲突h5py 3.16.0 - HDF5 2.0.0 Isaac Sim 5.1 - HDF5 1.14.6在同一个 Python 进程中两个不同 ABI 的hdf5.dll可能发生加载顺序冲突。谁先被加载另一个就可能因为符号或 ABI 不匹配而失败。因此第一处问题本质上是h5py 自带的 HDF5 版本与 Isaac Sim 使用的 HDF5 版本不一致修复步骤一降级 h5py将h5py降级到仍使用HDF5 1.14.6的版本。执行C:\Users\Lucky\miniconda3\envs\env_isaaclab\python.exe -m pip install --force-reinstall --no-deps --no-cache-dir h5py3.15.1安装完成后验证C:\Users\Lucky\miniconda3\envs\env_isaaclab\python.exe -c import h5py; print(h5py, h5py.__version__); print(hdf5, h5py.version.hdf5_version)期望输出h5py 3.15.1 hdf5 1.14.6这样h5py和 Isaac Sim 侧的 HDF5 版本就对齐了。修复步骤二处理 tensordict 导入崩溃降级h5py后原来的h5py._errors问题消失但继续运行 RSL-RL 训练时又在tensordict导入阶段遇到了 access violation。调用栈大致出现在rsl_rl - tensordict - tensordict native extension经测试如果在 Isaac Sim / Kit 启动之前提前导入import torch import tensordict训练可以正常运行。也就是说这里依然是 Windows 下原生扩展和 Isaac Sim / Kit 运行时之间的加载顺序问题。修改文件C:\Users\Lucky\IsaacLab\scripts\reinforcement_learning\rsl_rl\train.py在文件开头import argparse import sys后面加入# Load PyTorch/TensorDict native extensions before Kit starts on Windows. # Otherwise Isaac Sim can initialize DLLs first and TensorDict may crash on import. import torch import tensordict # noqa: F401修改后大致如下import argparse import sys # Load PyTorch/TensorDict native extensions before Kit starts on Windows. # Otherwise Isaac Sim can initialize DLLs first and TensorDict may crash on import. import torch import tensordict # noqa: F401 from isaaclab.app import AppLauncher同时如果文件后面原本还有一行import torch可以删掉避免重复导入。