Anaconda устанавливает Matlab Engine в Linux

Я пытаюсь установить Matlab Engine for Python на CentOS 7 для Matlab R2016a с использованием anaconda python 3.4.

Я выполнил следующие команды:

source activate py34 # Default is python 3.5
python setup.py install

Выход:

running install
running build
running build_py
running install_lib
creating /root/.local/lib/python2.7/site-packages/matlab
creating /root/.local/lib/python2.7/site-packages/matlab/_internal
copying build/lib/matlab/_internal/mlarray_sequence.py -> /root/.local/lib/python2.7/site-packages/matlab/_internal
copying build/lib/matlab/_internal/__init__.py -> /root/.local/lib/python2.7/site-packages/matlab/_internal
copying build/lib/matlab/_internal/mlarray_utils.py -> /root/.local/lib/python2.7/site-packages/matlab/_internal
copying build/lib/matlab/mlarray.py -> /root/.local/lib/python2.7/site-packages/matlab
creating /root/.local/lib/python2.7/site-packages/matlab/engine
copying build/lib/matlab/engine/engineerror.py -> /root/.local/lib/python2.7/site-packages/matlab/engine
copying build/lib/matlab/engine/futureresult.py -> /root/.local/lib/python2.7/site-packages/matlab/engine
copying build/lib/matlab/engine/fevalfuture.py -> /root/.local/lib/python2.7/site-packages/matlab/engine
copying build/lib/matlab/engine/basefuture.py -> /root/.local/lib/python2.7/site-packages/matlab/engine
copying build/lib/matlab/engine/matlabengine.py -> /root/.local/lib/python2.7/site-packages/matlab/engine
copying build/lib/matlab/engine/__init__.py -> /root/.local/lib/python2.7/site-packages/matlab/engine
copying build/lib/matlab/engine/enginesession.py -> /root/.local/lib/python2.7/site-packages/matlab/engine
copying build/lib/matlab/engine/_arch.txt -> /root/.local/lib/python2.7/site-packages/matlab/engine
copying build/lib/matlab/engine/matlabfuture.py -> /root/.local/lib/python2.7/site-packages/matlab/engine
copying build/lib/matlab/mlexceptions.py -> /root/.local/lib/python2.7/site-packages/matlab
copying build/lib/matlab/__init__.py -> /root/.local/lib/python2.7/site-packages/matlab
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/_internal/mlarray_sequence.py to mlarray_sequence.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/_internal/__init__.py to __init__.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/_internal/mlarray_utils.py to mlarray_utils.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/mlarray.py to mlarray.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/engine/engineerror.py to engineerror.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/engine/futureresult.py to futureresult.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/engine/fevalfuture.py to fevalfuture.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/engine/basefuture.py to basefuture.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/engine/matlabengine.py to matlabengine.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/engine/__init__.py to __init__.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/engine/enginesession.py to enginesession.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/engine/matlabfuture.py to matlabfuture.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/mlexceptions.py to mlexceptions.pyc
byte-compiling /root/.local/lib/python2.7/site-packages/matlab/__init__.py to __init__.pyc
running install_egg_info
Writing /root/.local/lib/python2.7/site-packages/matlabengineforpython-R2016a-py2.7.egg-info

Он каким-то образом устанавливает движок Matlab в системную версию Python, отличную от Anaconda py34 виртуальная среда Я заметил это на OSX, и он работает на моем Mac! Кто-нибудь может помочь с этим на CentOS?

4 ответа

Решение
cd "matlabroot\extern\engines\python"
python setup.py install --prefix="installdir"

Для Unix (OSX10) python2.7, используя Anaconda

cd /Applications/MATLAB_R2015a.app/extern/engines/python
python setup.py install --prefix="/Users/user/anaconda/"

Вот документ Matlab:

https://www.mathworks.com/help/matlab/matlab_external/install-matlab-engine-api-for-python-in-nondefault-locations.html

Просто напоминание для тех, у кого есть несколько виртуальных env в папке anacodna, после выполнения python setup.py install --prefix="/Users/user/anaconda/"как подсказывает @Leighton, пакет движка matlab фактически устанавливается в отдельной папке anacodna3/lib/python2.7/site-package/matlab, а не в обычном anaconda3/lib/python3.7/site-package. Поэтому вам нужно вручную переместить эту папку Matlab в папку пакета сайта, которую использует ваш python. Если у вас есть несколько виртуальных env, переместите их в соответствующую папку site-package того виртуального env, которое вы будете запускать.

После стольких пыток я, наконец, решил это простым способом. Вместо настройки системы на использование Py thon от Anaconda путем изменения.bash_profile, вы можете добавить альтернативу команде python:

  sudo update-alternatives --install /usr/bin/python python ~/anaconda3/envs/py34/bin/python 2
  update-alternatives --display python
  cd /usr/local/MATLAB/R2016a/extern/engines/python/
  sudo python setup.py install

Здесь я использую wsl ubuntu 20.04 в Windows 10, MATLAB R2021a и Pycharm.

  1. Создать среду conda

  1. Получите папку установки Matlab, набрав matlabrootв командном окне MATLAB.
       `ans =

    /usr/local/MATLAB/R2021a`

Теперь все вводимые данные будут вводиться в оболочке Linux.

  1. Сменить каталог на matlabroot
       (base) disusr@disusr:~$ cd /usr/local/MATLAB/R2021a
  1. Проверьте все доступные conda env через conda env list.

    (база) :/usr/local/MATLAB/R2021a/extern/engines/python$ список env conda

       base                  *  /home/disusr/anaconda3

ext_env     /home/disusr/anaconda3/envs/ext_env
  • Обратите внимание на основание в скобках. Это указывает baseenv conda в настоящее время активирован.
  1. Активировать ext_envнабрав
       conda activate ext_env

Вы заметите в терминале, теперь он выглядит

(ext_env) :/usr/local/MATLAB/R2021a/extern/engines/python$

  1. Затем установите движок MATLAB, набрав

sudo python setup.py установить --prefix="/home/disusr/anaconda3/envs/ext_env/"

  • Обратите внимание на двойные кавычки, заключающие полное имя каталога conda. Двойная кавычка должна быть там.

  • conda infoдолжен указать полный путь к конде env.

  1. Спасибо @talentcat за необходимость переместить папку .

В файловом менеджере перейдите в папку

       /home/disusr/anaconda3/envs/ext_env/lib/python2.7/site-packages/

и разрезать папку,

затем перейдите в папку

       /home/disusr/anaconda3/envs/ext_env/lib/python3.8/site-packages/

и вставьте папку MATLAB

  1. Затем откройте графический интерфейс MATLAB, набрав matlabв скорлупе

(ext_env) [электронная почта защищена][электронная почта защищена][электронная почта защищена] :/usr/local/MATLAB/R2021a/extern/engines/python$ matlab

  1. В МАТЛАБ Command Window, тип pyversion(), который должен печатать

Пиверсия()

         version: '3.8'
executable: '/home/disusr/anaconda3/envs/ext_env/bin/python'
   library: '/home/disusr/anaconda3/envs/ext_env/lib/libpython3.8.so'
      home: '/home/disusr/anaconda3/envs/ext_env'
  isloaded: 0
  1. Потенциальная проблема
  • Если вывод, как показано ниже
          version: ''
executable: ''
   library: ''
      home: ''
  isloaded: 0

a) Перезапустите MATLAB. b) Убедитесь, что при открытии MATLAB среда conda, в которой установлен механизм MATLAB, уже активирована. См. шаг (5). ИЛИ, чтобы проверить раздел How to permanently activate the conda environment.

***Я не пробовал открывать MATLAB с помощью symbolic linksбудет подключать MATLAB-ENGINE или нет. Пожалуйста, прокомментируйте, если вам удастся выполнить это успешно.

Бонус:

Как навсегда активировать среду conda.

В терминале введите

      nano .bashrc

Затем добавьте следующую строку

      export PATH=”/home/disusr/anaconda3/bin":$PATH"

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/disusr/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/nu>
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/disusr/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/disusr/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/disusr/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<
source activate ext_env

Чтобы сохранить добавленную строку

      ctl + x

а также

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