我正在尝试将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。版本
无论是使用mpirun
,mpiexec
运行,还是只是在终端python会话中输入import命令,都会出现显示的错误消息(最后一个是我如何生成错误消息,如此处复制)
我非常感谢你提供任何帮助。我已经尝试重新安装和/或更新所有相关的软件包和代码,但它还没有解决问题。
---更新---
出于绝望,我尝试将libmpi.12.dylib
重命名为libmpi.1.dylib
,并且至少目前是有效的。如果有人的话,我仍然对非黑客解决方案感兴趣。
答案 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