服务器端使用jupyter lab配置Matlab踩坑记录
jupyter配置
前面的安装步骤很简单,安装教程安装即可:
conda create -n matlab python=3.6 # 创建虚拟环境,不创建也可
conda install -c conda-forge jupyterlab
conda install -c conda-forge nodejs
不出意外的话,这时候jupyter已经可以跑起来了。命令如下:
jupyter lab --port=9000 --no-browser & # 端口号可以修改
但是这时候jupyter只是在服务器端启动了服务,想在本地访问,还需要讲本地端口映射到服务器端jupyter对应端口(9000)。也可以使用ip:port的方式直接访问,需要修改配置,这里没有使用。端口映射命令如下(这里将服务器端9000端口映射到本地9000端口):
ssh -N -f -L 9000:localhost:9000 user@ip
这时候在本地访问localhost:9000
按理来说应该可以访问jupyter界面了,但是这里有两个坑点:
jupyter lab 不支持python3.9,好像只支持2.7, 3.5, 3.6这几个版本,第一次安装的时候使用的python3.9,一直无法启动,最后新建python3.6的虚拟环境解决;
使用python3.6版本按照上述步骤安装之后,还是无法启动,会出现报错:
attributeerror: ‘extensionmanager‘ object has no attribute ‘_extensions‘
, 原因是库的版本问题,解决方案是pip install nbclassic==0.2.8
。
到这里,本地的jupyter应该就可以跑起来了。
jupyter matlab配置
确认jupyter安装成功之后,开始配置matlab环境(需要确保服务器中已经安装了matlab)。
首先安装相关库:
pip install matlab_kernel
安装之后,jupyter中应该就可以看到matlab_kernel了,但是这个时候如果直接使用,会报错:
出现这个图里的报错有两个原因,先讲第一个。上一步安装Matlab_kernel其实只是安装的第一步,为了能够真正使用调用服务器上的matlab,还需要到matlab的一个相关目录下进行手动安装,这个目录一般为:/usr/local/matlab19b/extern/engines/python
,其中Matlab19b可能需要替换为相应版本的文件夹。该目录下有一个setup.py
文件,就是安装文件。安装命令为:
python setup.py install
但是直接执行这个命令会出现权限问题,解决方案有两个:
- 将
engines/python
这个文件夹的权限修改一下 - 修改相关目录
python setup.py build --build-base="/path/to/directory_you_can_write_to" install --prefix="/path/to/virtualenv/" --user
到这一步matlab才算安装完成。但是这时候又出现了一些小插曲:matlab安装完成了,在ipython中可以正常import matlab.engine
,但是在jupyter中仍然显示matlab engine not installed
(上图)。仔细观察之后发现,报错信息中的路径是python3.9,而我此时使用的是新创建的虚拟环境(python3.6),因此确定了问题的原因应该是第一次安装的时候产生了一些kernel的配置文件,将kernel定位到了第一次安装时候的位置,只需要修改一下kernel的位置即可,解决方法如下:
jupyter kernelspec list # 查看当前所有kernel以及相应位置
cd \path\to\matlab_kernel # 此路径下有一个kernel.json文件,保存了这个kernel的相关信息
vim kernel.json # 修改路径信息到正确的位置即可
至此,在jupyter中就可以使用matlab了。另外还有一种方法据说可以修改kernel如图(没有尝试):
jupyterLab密码重置
由于有一段时间没有使用,原先设置的密码忘记了,然后需要进行重置,查了很多修改配置文件的方案都没有成功,最后发现命令其实很简单:
jupyter lab password
就 可 以 了😅