本文介绍了在mpi4py中加载MPI DLL时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在Windows 7 64位系统上将Mpi4py 1.3与python 2.7一起使用.我从此处下载了可安装版本,其中包含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

它返回以下错误:ImportError:DLL加载失败:找不到指定的模块.我试图将bove的lib文件与*/Python27 \ Lib \ site-packages \ mpi4py \ MPI.pyd一起复制,甚至复制到Windows/System32,但这没有用.感谢您在缺少DLL以及如何解决该错误方面的帮助.

It returns following error:ImportError: DLL load failed: The specified module could not be found. 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?

谢谢

@ Aso.agile

@Aso.agile

推荐答案

使用sys.prefix\lib\site-packages\mpi4py\bin\python-mpi.exe或在第37行附近的sys.prefix\lib\site-packages\mpi4py\__init__.py中添加以下代码:

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()

这篇关于在mpi4py中加载MPI DLL时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-30 02:17