DLL 加载失败:执行“from mpi4py import MPI"时找不到指定的模块
我正在尝试在 Windows 7 64 位上使用带有 python 2.7 的 Mpi4py 1.3.我从 here 下载了可安装版本,其中包括 OpenMPI 1.6.3 所以在安装目录 (*/Python27\Lib\site-packages\mpi4py\lib) 存在以下库:libmpi.lib、libmpi_cxx.lib、libopen-pal.lib 和 libopen-rte.lib.现在在我尝试导入时的代码中:
I am trying to use Mpi4py 1.3 with python 2.7 on Windows 7 64bits. I downloaded the installable version from here which includes OpenMPI 1.6.3 so in the installed directory (*/Python27\Lib\site-packages\mpi4py\lib) following libraries exist: libmpi.lib, libmpi_cxx.lib, libopen-pal.lib, and libopen-rte.lib. Now in my codes when trying to import it:
from mpi4py import MPI
它返回以下错误:
导入错误:DLL 加载失败:找不到指定的模块.
ImportError: DLL load failed: The specified module could not be found.
我尝试将上面的 lib 文件与 */Python27\Lib\site-packages\mpi4py\MPI.pyd 一起复制到 Windows/System32,但没有成功.感谢您提供有关缺少什么 DLL 以及如何修复错误的帮助?
I tried to copy a bove lib files alongside the */Python27\Lib\site-packages\mpi4py\MPI.pyd and even to Windows/System32, but it didn't work. I appreciate your help on what DLL is missing and how to fix the error?
使用 sys.prefix\lib\site-packages\mpi4py\bin\python-mpi.exe
或添加以下代码到sys.prefix\lib\site-packages\mpi4py\__init__.py
在第 37 行附近:
Use sys.prefix\lib\site-packages\mpi4py\bin\python-mpi.exe
or add the following code to sys.prefix\lib\site-packages\mpi4py\__init__.py
around line 37:
def _init_openmpi():
"""Pre-load libmpi.dll and register OpenMPI distribution."""
import os
import ctypes
if os.name != 'nt' or 'OPENMPI_HOME' in os.environ:
return
try:
openmpi_home = os.path.abspath(os.path.dirname(__file__))
openmpi_bin = os.path.join(openmpi_home, 'bin')
os.environ['OPENMPI_HOME'] = openmpi_home
os.environ['PATH'] = ';'.join((openmpi_bin, os.environ['PATH']))
ctypes.cdll.LoadLibrary(os.path.join(openmpi_bin, 'libmpi.dll'))
except Exception:
pass
_init_openmpi()