在mpi4py中加载MPI DLL时出错

时间:2012-12-22 16:23:21

标签: python python-2.7 openmpi

我试图在Windows 7 64位上使用Mpi4py 1.3和python 2.7。我从here下载了包含OpenMPI 1.6.3的可安装版本,因此在安装目录(* / Python27 \ Lib \ site-packages \ mpi4py \ lib)中存在以下库:libmpi.lib,libmpi_cxx.lib,libopen -pal.lib和libopen-rte.lib。现在在我的代码中尝试导入它时:

from mpi4py import MPI

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

谢谢,

@ Aso.agile

7 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,没有答案解决了这个问题。

对我来说,以下解决了问题。我手动编译并安装了mpi4py,如下所示:

  • https://duongtrungnghia.wordpress.com/2017/03/28/install-mpi4py-on-windows-10/安装Windows的MPI SDK 10 for Windows
  • C:\Program Files (x86)\Microsoft SDKs\MPI\LibC:\Program Files (x86)\Microsoft SDKs\MPI添加到Windows环境变量中(不确定是否需要)
  • 您需要带有MSVC 140或纯Visual Studio的Visual Studio生成工具。不知道什么版本。就我而言,尽管我当前使用的是VS2017,但mpi4py setup.py使用了C:\Program Files (x86)\Microsoft Visual Studio 14.0\....
  • 安装Windows SDK /工具包和开发工具(https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk
    • 打开开发人员命令提示符(就像带有一些其他功能的CMD)
    • 如果使用Virtualenv,则通过执行(venv / Scripts / activate)激活venv
    • 创建并更改到临时目录,然后执行以下操作:
      • git clone https://github.com/mpi4py/mpi4py.git
      • cd mpi4py
      • python -m pip install Cython
      • python setup.py build
      • python setup.py install

我的设置:

  • Windows 10
  • Python 3.7

答案 1 :(得分:3)

我解决了这个问题。我的环境是Win10,python 3.6.6,pycharm 2019.2,并链接到annaconda visual env。
1.下载MS MPI,安装.mis和SDK。
2.设置环境变量
控制面板->高级系统设置->环境变量->添加
(1)C:\ Program Files(x86)\ Microsoft SDKs \ MPI和
(2)C:\ Program Files \ Microsoft MPI \ Bin。 有我的泰铢,您可能需要在这里更改路径。
3.安装MS Visual Studio,社区版本就足够了
4. Anaconda提示,使用 conda install -c intel mpi4py 。我读了大多数答复,但没有这样提及。

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

在Windows 10上使用Mpi4py 1.3和python 3.5,我可以成功运行import mpi4py,但不能运行from mpi4py import MPI。要解决此问题,只需通过MPI重新安装MPI。这对我有用。

答案 4 :(得分:0)

对于任何从mpi4py导入此错误的人,导入MPI ImportError:DLL加载失败:找不到指定的过程。” 我通过将MSMPI降级到V10.0来解决它,它不适用于V10.2。 并使用MPISdk V8.0 您必须卸载现在拥有的MSMPI,然后从此链接MSMPIV10.0安装V10.0 如果不卸载旧版本,则不接受安装新版本, 希望它会成功

答案 5 :(得分:0)

我尝试了以下方法,并且有效。

  1. 卸载OpenMPI
  2. 卸载mpi4py
  3. 安装Microsoft MPI
  4. mpi4py重新安装pip,以便安装车轮

来源:https://groups.google.com/d/msg/mpi4py/VA7Aihi64R0/jnxAT2HtCgAJ

答案 6 :(得分:0)

我通过从 https://github.com/Microsoft/Microsoft-MPI 安装最新版本的 MSMPI 修复了错误