Проблемы с установкой "MATLAB Engine для Python" с Anaconda
Я использую Python 3.4.3 | Anaconda 2.3.0 (x86_64) на OS X 10.10.5 и следуя этим инструкциям, чтобы установить MATLAB Engine для Python. Похоже, что установка прошла успешно, но после запуска python и попытки импорта я вижу следующее:
Python 3.4.3 |Anaconda 2.3.0 (x86_64)| (default, Oct 20 2015, 14:27:51)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import matlab.engine
Traceback (most recent call last):
File "/Users/tyler/.local/lib/python3.4/site-packages/matlab/engine/__init__.py", line 42, in <module>
pythonengine = importlib.import_module("matlabengineforpython"+_PYTHONVERSION)
File "/Users/tyler/anaconda/lib/python3.4/importlib/__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlocked
ImportError: No module named 'matlabengineforpython3_4'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/tyler/.local/lib/python3.4/site-packages/matlab/engine/__init__.py", line 58, in <module>
pythonengine = importlib.import_module("matlabengineforpython"+_PYTHONVERSION)
File "/Users/tyler/anaconda/lib/python3.4/importlib/__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
File "<frozen importlib._bootstrap>", line 539, in _check_name_wrapper
File "<frozen importlib._bootstrap>", line 1715, in load_module
File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
ImportError: dlopen(/Applications/MATLAB_R2015b.app/extern/engines/python/dist/matlab/engine/maci64/matlabengineforpython3_4.so, 2): Library not loaded: @rpath/libpython3.4m.dylib
Referenced from: /Applications/MATLAB_R2015b .app/extern/engines/python/dist/matlab/engine/maci64/matlabengineforpython3_4.so
Reason: image not found
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/tyler/.local/lib/python3.4/site-packages/matlab/engine/__init__.py", line 60, in <module>
raise EnvironmentError('The installation of MATLAB Engine for Python is '
OSError: The installation of MATLAB Engine for Python is corrupted. Please reinstall it or contact MathWorks Technical Support for assistance.
Исследуя эту проблему, я нашел несколько других ссылок на эту проблему на веб-сайте MathWorks, но все без разрешения. Последняя ссылка предполагает, что проблема может быть с динамической связью.
Учитывая, сколько научных наборов инструментов доступно только в MATLAB, было бы очень полезно иметь возможность вызывать этот движок с помощью Anaconda. В то время как есть другие доступные пакеты, которые поддерживают эту функциональность, у них всегда есть ограничения или другая сложность как архитектура клиент-сервер.
Любые предложения приветствуются.
1 ответ
Согласно моему общению с поддержкой MathWorks, MATLAB Engine для Python несовместим с Anaconda. К счастью, это неверно.
Благодаря некоторым указаниям из списка рассылки Anaconda я нашел простое решение:
sudo ln -s ~/anaconda/lib/libpython3.4m.dylib /usr/lib
После этого matlab.engine успешно импортирует. Надеюсь, это поможет кому-то!
Редактировать: Начиная с OS X 10.11 El Capitan, обходной путь должен быть настроен из-за функции Rootless, так как root больше не имеет права изменять /usr/lib
sudo ln -s ~/anaconda/lib/libpython3.4m.dylib /usr/local/lib
Если вы пытаетесь установить движок Matlab в среде conda, выполните следующие действия:
cd "matlabroot\extern\engines\python"
python setup.py install --prefix="installdir"
Например
cd /opt/MATLAB/R2019a/extern/engines/python
python setup.py install --prefix="/home/nagabhushan/anaconda3/"
Теперь пакет движка Matlab фактически установлен под отдельным
anaconda3/lib/python3.6/site-package/matlab
Поэтому вам нужно вручную переместить эту папку Matlab в папку пакета сайта, которую использует ваш python. Если у вас есть несколько виртуальных env, переместите их в соответствующую папку site-package того виртуального env, которое вы будете запускать. Напримерanaconda3/envs/my_env/lob/python3.6/site-packages/matlab
Ссылки:
/questions/27270177/anaconda-ustanavlivaet-matlab-engine-v-linux/27270186#27270186
/questions/27270177/anaconda-ustanavlivaet-matlab-engine-v-linux/55090707#55090707
Редактировать 1 (03 марта 2020 г.):
я попытался активировать свою среду, а затем просто установить движок Matlab, и он сработал! я используюPython 3.7
python setup.py install
Обратите внимание, что изначально это давало ошибку, которая error: You do not have write permission in build/lib/matlab/engine/
, но изменение разрешения каталога сборки рекурсивно работало: sudo chmod -R 777 build/