You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MPI运行Python脚本导入adios2时找不到libhdf5.so.10的求助

解决MPI运行Python脚本导入adios2时找不到libhdf5.so.10的问题

核心原因

MPI启动进程时可能不会完全继承当前shell的环境变量,部分MPI实现还会默认过滤/重置环境变量,导致你手动设置的LD_LIBRARY_PATH未生效。

具体解决方法

  • 方法一:MPI启动时强制传递环境变量
    多数MPI实现(如OpenMPI、MPICH)支持用-x参数将指定环境变量传递给所有子进程,直接在启动命令中添加:

    mpirun -x LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH -n [进程数] python your_script.py
    

    也可简化为直接指定路径:

    mpirun -x LD_LIBRARY_PATH=/usr/lib64 -n [进程数] python your_script.py
    
  • 方法二:在Python脚本开头手动设置环境变量
    在导入adios2之前,通过Python修改当前进程的环境变量,确保加载库时能找到目标路径:

    import os
    # 将/usr/lib64加到库路径最前面,避免优先级冲突
    os.environ['LD_LIBRARY_PATH'] = '/usr/lib64:' + os.environ.get('LD_LIBRARY_PATH', '')
    # 再导入adios2模块
    import adios2
    
  • 方法三:检查ADIOS2的依赖绑定情况
    先确认adios2模块实际依赖的HDF5库路径是否正确,在CLI中执行:

    ldd $(python -c "import adios2; print(adios2.__file__)") | grep hdf5
    

    如果输出中libhdf5.so.10显示为not found,说明ADIOS2编译时链接的HDF5路径与当前系统不一致。这种情况需要重新编译ADIOS2,指定系统的HDF5路径:

    # 进入ADIOS2源码目录,创建编译目录
    mkdir build && cd build
    # 指定HDF5的头文件和库文件路径
    cmake -DADIOS2_USE_HDF5=ON -DHDF5_INCLUDE_DIR=/usr/include -DHDF5_LIBRARY=/usr/lib64/libhdf5.so.10 ..
    # 编译并安装到自己有权限的目录(如~/.local)
    make -j4 install
    

    之后需确保Python能找到新安装的adios2模块,可将安装路径下的lib/pythonX.X/site-packages添加到PYTHONPATH环境变量中。

内容的提问来源于stack exchange,提问作者MPEI_stud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:36:09