Ошибка загрузки MPI DLL в mpi4py

Я пытаюсь использовать Mpi4py 1.3 с Python 2.7 на Windows 7 64bit. Отсюда я скачал устанавливаемую версию, которая включает 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

8 ответов

Решение

Использование 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()

Используя Mpi4py 1.3 с python 3.5 на Windows 10, я могу запустить import mpi4py успешно, но не from mpi4py import MPI, Чтобы это исправить, просто переустановите MPI через MPI. Это работает для меня.

Я решил проблему. Моя среда - Win10, python 3.6.6, pycharm 2019.2 и связана с визуальным окружением annaconda.
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. Я прочитал большинство ответов, но не упомянул об этом.

У меня была такая же проблема, и никакой ответ не решил ее.

Для меня следующее решило проблему. Я скомпилировал и установилmpi4py вручную следующим образом:

  • Установите MPI SDK 10 для Windows со https://duongtrungnghia.wordpress.com/2017/03/28/install-mpi4py-on-windows-10/.
  • Добавить C:\Program Files (x86)\Microsoft SDKs\MPI\Lib а также C:\Program Files (x86)\Microsoft SDKs\MPI в переменные среды Windows (не уверен, если необходимо)
  • Вам потребуются инструменты сборки Visual Studio с MSVC 140 или чистая Visual Studio. Не уверен, какая версия. В моем случае mpi4py setup.py использовалC:\Program Files (x86)\Microsoft Visual Studio 14.0\.... хотя сейчас я использую VS2017.
  • Установите Windows SDK/ комплекты и инструменты разработчика (https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk)
    • Откройте командную строку разработчика (это похоже на CMD с некоторыми дополнениями)
    • Активируйте Venv, выполнив (venv / Scripts / activate), если вы используете Virtualenv
    • Создайте временный каталог и перейдите во временный каталог и выполните следующие действия:
      • 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. Удаление OpenMPI
  2. Удаление mpi4py
  3. Установка Microsoft MPI
  4. Переустановка mpi4py с pip так что колесо установлено

Источник: https://groups.google.com/d/msg/mpi4py/VA7Aihi64R0/jnxAT2HtCgAJ

Я исправил ошибку, установив последнюю версию MSMPI с https://github.com/Microsoft/Microsoft-MPI.

Для тех, кто получает эту ошибку "из mpi4py import MPI ImportError: Ошибка загрузки DLL: указанная процедура не может быть найдена". Я решил это, понизив MSMPI до V10.0, он не работал с V10.2. И используйте MPISdk V8.0, вам нужно удалить MSMPI, который у вас есть сейчас, и установить V10.0 по этой ссылке MSMPIV10.0 Он не принимает установку новой версии без удаления старой, надеюсь, это сработает

В моем случае Microsoft MPI не был установлен. Убедитесь, что он у вас есть.

https://www.microsoft.com/en-us/download/details.aspx?id=57467

Другие вопросы по тегам