2016-02-12 1 views
2

Я пытаюсь использовать python с mpi4py. Однако, когда я бегу from mpi4py import MPI в среде Python, я получаю следующее сообщение об ошибке:mpi4py: библиотека не загружена: /usr/local/lib/libmpi.1.dylib

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: dlopen(/usr/local/lib/python2.7/site-packages/mpi4py/MPI.so, 2): Library not loaded: /usr/local/lib/libmpi.1.dylib 
    Referenced from: /usr/local/lib/python2.7/site-packages/mpi4py/MPI.so 
    Reason: image not found 

В указанном пути (/usr/local/lib/) У меня есть то, что я думаю, что это версия требуемого файла под названием libmpi.12.dylib. Я посмотрел на source code for mpi4py и из того, что могу сказать, этот файл действителен, но по какой-то причине mpi4py (особенно MPI.so) все еще пытается использовать .1. версия.

Отображается сообщение об ошибке, выполняемое с использованием mpirun, или просто введите команду импорта в сеансе терминала python (последний из них - это то, как я сгенерировал сообщение об ошибке как скопированное здесь).

Буду признателен за любую помощь по этому вопросу. Я попытался переустановить и/или обновить все связанные пакеты и коды, но это не решило проблему.

--- ОБНОВЛЕНИЕ --- Из отчаяния я попытался переименовать libmpi.12.dylib в libmpi.1.dylib, и это сработало, по крайней мере пока. Меня все еще интересует решение без хака, если у кого-то есть.

+0

Когда вы запускаете свою программу, используете ли вы MPI? То есть вы используете команду 'mpiexec -n # python myprogram.py ...' или просто 'python myprogram.py ...'? Чтобы быть ясным, первое верно при использовании MPI. – Kevin

+0

@Kevin, я обновил свой вопрос в ответ на ваш комментарий. – jthomas

ответ

1

Я думаю, что ваша проблема должна быть решена сейчас, однако у меня была одна и та же проблема с одной итерацией позже;

ImportError: dlopen(/Users/<proj>/venv/lib/python3.5/site-packages/mpi4py/MPI.cpython-35m-darwin.so, 2): 
Library not loaded: /usr/local/opt/open-mpi/lib/libmpi.12.dylib 
    Referenced from: /Users/<proj>/venv/lib/python3.5/site-packages/mpi4py/MPI.cpython-35m-darwin.so 
    Reason: image not found 

Моя машина имеет libmpi.20.dylib, но не libmpi.12.dylib, и хотя источник mpi4py кажется, чтобы проверить это, он не работает для меня. Моим быстрым и грязным обходным путем было сделать символическую ссылку;

ln -s /usr/local/opt/open-mpi/lib/libmpi.20.dylib /usr/local/opt/open-mpi/lib/libmpi.12.dylib 

И он сработал (по крайней мере, он смог загрузить библиотеку). Обратите внимание, что я на самом деле не использую MPI локально, я просто включаю библиотеки, поэтому код более или менее переносим для кластера.

-frbl

 Смежные вопросы

  • Нет связанных вопросов^_^