16

我正在尝试在 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。现在在我的代码中尝试导入它时:

from mpi4py import MPI

它返回以下错误:

ImportError:DLL 加载失败:找不到指定的模块。

我试图在 */Python27\Lib\site-packages\mpi4py\MPI.pyd 旁边复制一个 lib 文件,甚至复制到 Windows/System32,但它没有用。感谢您就缺少哪些 DLL 以及如何修复错误提供帮助?

4

7 回答 7

14

在 Windows 10 上使用 Mpi4py 1.3 和 python 3.5,我可以import mpi4py成功运行但不是from mpi4py import MPI. 要修复它,只需通过 MPI 重新安装MPI。这对我有用。

于 2019-02-27T14:33:14.130 回答
9

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

于 2019-09-04T04:54:40.707 回答
5

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

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

  • 从https://duongtrungnghia.wordpress.com/2017/03/28/install-mpi4py-on-windows-10/安装适用于 Windows 的 MPI SDK 10
  • 添加C:\Program Files (x86)\Microsoft SDKs\MPI\LibC:\Program Files (x86)\Microsoft SDKs\MPI到您的 Windows 环境变量(不确定是否需要)
  • 您需要带有 MSVC 140 或纯 Visual Studio 的 Visual Studio 构建工具。不确定是什么版本。就我而言,C:\Program Files (x86)\Microsoft Visual Studio 14.0\....尽管我目前使用的是 VS2017,但还是使用了 mpi4py setup.py。
  • 安装 Windows SDK/Kits 和开发工具 ( 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

我的设置:

  • 视窗 10
  • 蟒蛇 3.7
于 2019-08-23T15:37:23.913 回答
3

在第 37 行左右使用sys.prefix\lib\site-packages\mpi4py\bin\python-mpi.exe或添加以下代码: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()
于 2013-01-08T15:23:49.620 回答
1

对于收到此错误的任何人“从 mpi4py import MPI ImportError:DLL 加载失败:找不到指定的过程。” 我通过将 MSMPI 降级到 V10.0 来解决它,它不适用于 V10.2。并使用 MPISdk V8.0 你必须卸载你现在拥有的 MSMPI 并从这个链接安装 V10.0 MSMPIV10.0 它不接受在不卸载旧版本的情况下安装新版本,希望它会工作

于 2020-02-28T12:45:52.660 回答
1

我尝试了以下方法,它奏效了。

  1. 卸载 OpenMPI
  2. 卸载mpi4py
  3. 安装微软 MPI
  4. 重新安装mpi4pypip以便安装轮子

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

于 2020-06-01T15:52:55.990 回答
1

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

于 2021-03-26T10:21:18.140 回答