Scientific Linux7.4下mpi4py报ompi_mpi_logical8未定义符号错误求解
解决MPI/mpi4py版本冲突及未定义符号问题
1. 清理冲突的MPI环境与mpi4py残留
- 彻底卸载所有mpi4py实例:
- 普通用户执行:
pip uninstall -y mpi4py - 若root用户也安装过,切换到root执行同样命令
- 手动删除残留目录:
rm -rf /home/people/hkaya/.local/lib/python3.6/site-packages/mpi4py # 若系统级目录存在mpi4py也删除,示例: rm -rf /usr/lib/python3.6/site-packages/mpi4py
- 普通用户执行:
- 移除系统中冲突的OpenMPI(若允许):
- Debian/Ubuntu:
apt remove --purge openmpi-bin openmpi-common - RHEL/CentOS:
yum remove openmpi openmpi-devel
- Debian/Ubuntu:
2. 优先加载目标MPICH 4.2.0环境
- 假设MPICH安装在
/opt/mpich-4.2.0,临时生效环境变量:export PATH=/opt/mpich-4.2.0/bin:$PATH export LD_LIBRARY_PATH=/opt/mpich-4.2.0/lib:$LD_LIBRARY_PATH export MPI_ROOT=/opt/mpich-4.2.0 - 永久生效则将上述命令添加到普通用户的
~/.bashrc或~/.profile,root用户同理 - 验证环境:
- 执行
mpiexec --version,需显示HYDRA 4.2.0版本 - 执行
mpicc -show,输出需指向MPICH的编译路径
- 执行
3. 重新编译安装mpi4py
- 先安装Python开发依赖:
- Debian/Ubuntu:
apt install python3.6-dev - RHEL/CentOS:
yum install python36-devel
- Debian/Ubuntu:
- 强制从源码编译,绑定当前MPICH:
pip install --no-cache-dir --force-reinstall mpi4py --no-binary mpi4py
4. 验证安装正确性
- 检查动态链接库依赖:
需看到MPICH相关库(如ldd /home/people/hkaya/.local/lib/python3.6/site-packages/mpi4py/MPI.cpython-36m-x86_64-linux-gnu.solibmpi.so、libhydra.so) - 运行测试脚本:
创建test_mpi.py:
执行from mpi4py import MPI comm = MPI.COMM_WORLD print(f"Rank {comm.Get_rank()} of {comm.Get_size()}")mpiexec -n 2 python test_mpi.py,正常输出进程rank信息则说明问题解决
额外注意事项
- 统一用户环境:若root用户需运行该包,需同步其环境变量到目标MPICH,并重新安装对应mpi4py
- 隔离MPI实现:避免同时保留OpenMPI与MPICH,若必须共存,需通过环境变量严格隔离编译与运行环境
内容的提问来源于stack exchange,提问作者Hikmet Emre Kaya
相关产品推荐
相关产品推荐

