2

mpi4pyでpythonを使用しようとしています。ただし、from mpi4py import MPIpython 環境で実行すると、次のエラーが発生します。

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.dylibmpi4py のソース コードを調べたところ、このファイルが有効であることがわかりましたが、何らかの理由で mpi4py (具体的には MPI.so) がまだ .1 を使用しようとしています。バージョン。

表示されるエラー メッセージmpirunは、mpiexec、 を使用して実行するか、端末の Python セッションで import コマンドを入力するだけで発生します (最後のエラー メッセージは、ここにコピーしたエラー メッセージを生成した方法です)。

これについて何か助けていただければ幸いです。関連するすべてのパッケージとコードを再インストールおよび/または更新しようとしましたが、問題は解決しませんでした。

--- 更新 --- 必死になって名前を変更しようlibmpi.12.dyliblibmpi.1.dylibしましたが、少なくとも今のところは機能しました。誰かがハック以外のソリューションを持っている場合、私はまだハック以外のソリューションに興味があります。

4

1 に答える 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 に答える