mpi4py:未加载库:/usr/local/lib/libmpi.1.dylib

时间:2016-02-12 19:09:27

标签: python python-import mpi4py

我正在尝试将python与mpi4py一起使用。但是,当我在python环境中运行from mpi4py import MPI时,我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/usr/local/lib/python2.7/site-packages/mpi4py/MPI.so,  2): Library not loaded: /usr/local/lib/libmpi.1.dylib
  Referenced from: /usr/local/lib/python2.7/site-packages/mpi4py/MPI.so
  Reason: image not found

在指定的路径(/usr/local/lib/)中,我认为我所需的文件名为libmpi.12.dylib。我查看了source code for mpi4py,从我可以看出这个文件是有效的,但由于某种原因,mpi4py(MPI.so具体)仍在尝试使用.1。版本

无论是使用mpirunmpiexec运行,还是只是在终端python会话中输入import命令,都会出现显示的错误消息(最后一个是我如何生成错误消息,如此处复制)

我非常感谢你提供任何帮助。我已经尝试重新安装和/或更新所有相关的软件包和代码,但它还没有解决问题。

---更新--- 出于绝望,我尝试将libmpi.12.dylib重命名为libmpi.1.dylib,并且至少目前是有效的。如果有人的话,我仍然对非黑客解决方案感兴趣。

1 个答案:

答案 0 :(得分:1)

我认为你的问题现在应该得到解决,但是,我之后的迭代会遇到完全相同的问题;

ImportError: dlopen(/Users/<proj>/venv/lib/python3.5/site-packages/mpi4py/MPI.cpython-35m-darwin.so, 2):
Library not loaded: /usr/local/opt/open-mpi/lib/libmpi.12.dylib
    Referenced from: /Users/<proj>/venv/lib/python3.5/site-packages/mpi4py/MPI.cpython-35m-darwin.so
    Reason: image not found

我的机器有libmpi.20.dylib,但没有libmpi.12.dylib,虽然mpi4py的来源似乎检查了这个,但它对我不起作用。我的快速而肮脏的解决方法是制作符号链接;

ln -s /usr/local/opt/open-mpi/lib/libmpi.20.dylib /usr/local/opt/open-mpi/lib/libmpi.12.dylib

它起作用(至少,它能够加载库)。请注意,我实际上并没有在本地使用MPI,我只是包含了库,因此代码对于集群来说或多或少都是可移植的。

-frbl