DLL 加载失败:执行“from mpi4py import MPI”时找不到指定的模块

新手上路,请多包涵

我正在尝试在 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 加载失败:找不到指定的模块。

我试图将 bove lib 文件与 */Python27\Lib\site-packages\mpi4py\MPI.pyd 一起复制到 Windows/System32,但它没有用。感谢您帮助我了解缺少什么 DLL 以及如何修复错误?

原文由 Aso Agile 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.4k
2 个回答

使用 sys.prefix\lib\site-packages\mpi4py\bin\python-mpi.exe 或将以下代码添加到 sys.prefix\lib\site-packages\mpi4py__init__.py 第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()

原文由 cgohlke 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 R_Z 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题