2

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

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. 我查看了mpi4py 的源代码,据我所知该文件是有效的,但由于某种原因,mpi4py(特别是 MPI.so)仍在尝试使用 .1。版本。

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

我将不胜感激任何帮助。我已经尝试重新安装和/或更新所有相关的包和代码,但它并没有解决问题。

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

4

1 回答 1

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

于 2016-09-02T09:34:23.043 回答