Как вызвать библиотеку MATLAB из виртуальной среды Python на Mac - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь вызвать пакет MATLAB, упакованный для Python на macOS, из виртуальной среды.

Чтобы использовать среду выполнения MATLAB на macOS, необходимо обновить DYLD_LIBRARY_PATH, чтобы он указывал наMATLAB Runtime , а также libpython3.6.dylib.

export DYLD_LIBRARY_PATH="/Applications/MATLAB/MATLAB_Runtime/v95/runtime/maci64:/Applications/MATLAB/MATLAB_Runtime/v95/sys/os/maci64:/Applications/MATLAB/MATLAB_Runtime/v95/bin/maci64:/Library/Frameworks/Python.framework/Versions/3.6/lib:${DYLD_LIBRARY_PATH}"

Затем создайте и активируйте виртуальную среду Python:

$ python3.6 -m venv py36
$ source py36/bin/activate

Затем установите MATLAB, упакованный для Pythonприложение в виртуальной среде:

(py36) $ cd /Applications/my_matlab_app/application
(py36) $ python setup.py install
(py36) $ pip list
Package                Version
---------------------- -------
matlabruntimeforpython R2018b 
pip                    18.1   
setuptools             40.6.2 

Теперь попробуйте запустить скрипт, который импортирует вашу библиотеку MATLAB в виртуальную среду:

(py36) $ python matlab_test.py 
Exception caught during initialization of Python interface. Details: On the Mac, use 'mwpython' rather than 'python' to start a script or session that will call deployed MATLAB code from Python.
Traceback (most recent call last):
  File "matlab_test.py", line 26, in <module>
    import my_matlab_app
  File "/Users/user/venv/py36/lib/python3.6/site-packages/my_matlab_app/__init__.py", line 283, in <module>
    _pir.import_cppext()
  File "/Users/user/venv/py36/lib/python3.6/site-packages/my_matlab_app/__init__.py", line 276, in import_cppext
    self.cppext_handle = importlib.import_module("matlabruntimeforpython" + self.interpreter_version)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
RuntimeError: On the Mac, use 'mwpython' rather than 'python' to start a script or session that will call deployed MATLAB code from Python.

Проблема в том, что доЯ могу сказать, mwpython нельзя использовать в виртуальных средах.Есть ли способ обойти это?В настоящее время мы изо всех сил пытаемся создать воспроизводимые среды, потому что mwpython кажется жестким кодом для всего, что нужно установить в глобальном масштабе.

Проверено на:

  • macOS 10.14.2
  • Python 3.6.8 установлен с python.org
  • MATLAB Runtime 2018b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...