【问题标题】:Install Matlab engine in Anaconda Python (Linux)在 Anaconda Python (Linux) 中安装 Matlab 引擎
【发布时间】:2016-09-25 16:44:30
【问题描述】:

我正在尝试使用 anaconda python 3.4 在 CentOS 7 上为 Matlab R2016a 安装 Matlab Engine for Python

我执行了以下命令:

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 上注意到 this 并且它在我的 Mac 上工作!任何人都可以在 CentOS 上提供帮助吗?

【问题讨论】:

    标签: python matlab anaconda


    【解决方案1】:
    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

    【讨论】:

    【解决方案2】:

    只是提醒那些在anaconda文件夹下有多个虚拟环境的人,做完之后

    python setup.py install --prefix="/Users/user/anaconda/"

    根据@Leighton的提示,Matlab引擎包其实是单独安装在下面的

    anaconda3/lib/python2.7/site-package/matlab 
    

    文件夹而不是普通的

    anaconda3/lib/python3.7/site-package. 
    

    因此,您需要手动将该 Matlab 文件夹移动到您的 python 正在使用的站点包文件夹中。

    如果您有多个虚拟环境,请将其移动到您将运行程序的虚拟环境的相应站点包文件夹中。

    【讨论】:

      【解决方案3】:

      经过这么多的折磨,我终于以一种简单的方式解决了这个问题。除了通过修改 .bash_profile 来配置系统使用 anaconda 的 python,您还可以添加 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
      

      【讨论】:

        【解决方案4】:

        在这里,我在 Windows 10、MATLAB R2021a 和 Pycharm 上使用 wsl ubuntu 20.04。

        1. 创建 conda 环境

        1. 在 MATLAB 命令行窗口中输入 matlabroot 获取 matlab 安装文件夹。
        `ans =
        
            /usr/local/MATLAB/R2021a`
        

        现在,所有输入都将在 linux shell 中输入。

        1. 将目录更改为 matlabroot
        (base) disusr@disusr:~$ cd /usr/local/MATLAB/R2021a
        
        1. 通过conda env list检查所有可用的conda env。

          (base) rpb@rpb:/usr/local/MATLAB/R2021a/extern/engines/python$ conda 环境列表

        base                  *  /home/disusr/anaconda3
        
        ext_env     /home/disusr/anaconda3/envs/ext_env
        
        • 注意随附支架中的底座。这表明 conda 的 base env 当前已激活。
        1. 通过键入激活ext_env
        conda activate ext_env
        

        您会在终端中注意到,它现在看起来

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

        1. 接下来,通过键入来安装 MATLAB 引擎

        sudo python setup.py install --prefix="/home/disusr/anaconda3/envs/ext_env/"

        • 请注意包含 conda 目录的完整目录名称的双引号。双引号应该在那里。

        • conda info 应该给出 conda env 的完整路径。

        1. 感谢@talentcat 需要移动folder

        在文件管理器中,导航到文件夹

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

        并剪切文件夹MATLAB

        然后导航到文件夹

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

        并粘贴文件夹MATLAB

        1. 然后,通过在 shell 中键入 matlab 打开 MATLAB gui

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

        1. 在 MATLAB Command Window 中,键入 pyversion(),它应该会打印出来

        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 时,安装了 MATLAB 引擎的 conda 环境已经被激活。参见步骤 (5)。或者,查看How to permanently activate the conda environment 部分。

        ***我还没有尝试使用symbolic links打开MATLAB是否会连接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
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-08
        相关资源
        最近更新 更多