vscode中的MatLab环境
Motivation
以后或许要用到MatLab,先配个环境。习惯了vscode,什么都想看看能不能用vsc来做。
Preparation
Licensed MatLab
Python
这里要注意,不同的MatLab版本支持的Python version有所不同。我现在主要是以py310为target,前向兼容一般做到py37。而MatLab
R2022b
最高只支持py39,最新的支持py37的MatLab版本是R2021b
。
MatLab in JupyterLab
这里有一篇外文博客,有不详细的地方可以到这里查阅
- 创建、激活环境
- 安装pip包matlab kernel以及
jupyter
,jupyterlab
,ipykernel
:pip install matlab_kernel jupyter jupyterlab ipykernel
- 安装jupyter内核:
python -m matlab_kernel install
- 仍然在当前的环境里,安装MatLab Python Engine:
cd ${MATLAB_ROOT}/extern/engines/python # ${MATLAB_ROOT}是MatLab的安装目录
python setup.py install
检查:jupyter kernelspec list
,若能列出 matlab 内核就可以了。
此时您已经可以在此环境的jupyter notebook, jupyterlab中使用 matlab 语法并运行了。
MatLab in vscode
语法检查与高亮:插件Gimly81.matlab。需要配置mlint
路径,才能开始语法检查。
上文已经可以在jupyter notebook里运行 MatLab了。众所周知,vsc是支持 jupyter notebook的。不过我们之前的一系列操作都是在特定的环境里面操作的,而 vsc里选择matlab内核时并没有附带在哪个环境运行的选项。下面稍微修改一下之前安装的 jupyter 内核,使得它能够在 vscode 里正常运行。
之前运行python -m matlab_kernel install
的时候,输出会打出kernel.json
的存储位置,如C:\ProgramData\jupyter\kernels\matlab\kernel.json
。打开发现是这样的结构:
{
"argv": [
"python",
"-m",
"matlab_kernel",
"-f",
"{connection_file}"
],
"display_name": "Matlab",
"language": "matlab",
"mimetype": "text/x-octave",
"name": "matlab_connect"
}
可以看到雀实没有指定环境。查阅 jupyter client的文档,发现可以指定内核的环境变量,从而实现指定 python 环境:
"env": {
"VIRTUAL_ENV": "${KERNEL_VENV}",
"PATH": "${KERNEL_VENV}\\Scripts;${PATH}"
}
我们可以在配置中加入这样的字段,从而让 vscode 的 jupyter client能够找到运行 matlab_kernel
的环境。${KERNEL_VENV}
是之前的虚拟环境的路径。上述写法用于windows,linux的分隔符是冒号而不是分号,子目录应该也不是Scripts(而是bin?)
改完之后在 vscode 的 jupyter notebook 里就可以启动 MatLab 内核了。
后记
运行可以用测试任务解决,但调试目前还没找到在vsc内部实现的办法。调用 MatLab调试参考如下回答