安装matlab
环境
Ubuntu 20.04LTS
Python3.5
TensorFlow1.4.0
matlab2018a
参考博文:https://blog.csdn.net/m0_37775034/article/details/80876362
安装
ssh连接服务器装的,因为没有装teamviewer所以没有图形界面,尝试用命令行安装,参考了网上的命令行安装教程,安装失败。
最后还是装了teamviewer连接服务器,使用图形界面来装matlab,主要是因为挂载了dvd1.iso后需要启动安装程序,然后打开图形界面“下一步,下一步”这样的安装,不在图形界面下直接用命令行启动install会失败。
PS:上面给出的参考博文里启动用的命令是
sudo matlab
不过实际上看挂载后文件夹里的文件,启动命令也有可能是
sudo install
Python调用
这里需要进入matlab安装目录,以matlabroot代替,进入目录matlabroot/extern/engine/python
按照步骤通过代码安装
sudo python setup.py install
坑1
好了,第一个坑来了。
服务器上我使用了Python虚拟环境来装matlab,理所当然的,matlab设置的也应该是装在虚拟环境下的,但运行了程序后,他是默认装在root环境下的。
按照网上的解决办法进行了尝试。
尝试1
把整个engine目录拷贝到对应的python环境site-pakage里,不行。
尝试2
按道理可以修改环境配置文件,把路径强行修改到虚拟环境,但我用的服务器上面还有多个用户,修改root的环境配置文件搞不好会魔改,放弃。
尝试3
把root下生成的matlab文件拷贝到虚拟环境下,编译通过了,但是因为root的python用的是2.7,虚拟环境下是3.5,版本不对,后面可能会有问题,所以还是再找找别的办法。
尝试4
皇天不负有心人,我找到了
参考博文:https://blog.csdn.net/qq_38941327/article/details/103206463
在sudo后面强行定位虚拟环境的位置,终于木得问题了,令人感动。
运行过程
以为这样就结束了吗?
不,这只是坑的开始。
matlab装好了,迎来了第二个坑。
坑2
我佛了,网上没找到这个问题的解决办法,或许是我检索的关键词不对,Stack Overflow上面有人问了,但几年了都还没回答。
解决方法待续。。。
先解决下面那个问题
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /home/1718/kyx/matlab/matlab2018/extern/engines/python/dist/matlab/engine/glnxa64/../../../../../../../bin/glnxa64/libmwengine_api.so)
libstdc++.so.6是一个软连接,运行命令查看
ls -l | grep libstdc++.so.6
得到结果
连接到动态库文件libstdc++.so.6.0.21,使用命令查看文件
strings libstdc++.so.6.0.21 | grep GLIBCXX
得到结果
说明版本比较低,缺少GLIBCXX_3.4.22,需要一个更高版本的libstdc++.so.6,比如libstdc++.so.6.0.22,可以先查一下本地有没有
locate libstdc++.so.6
如果有,可以先检查一下里面有没有需要的GLIBCXX版本(一般都是有的),然后把这个libstdc++.so.6.xxx拷贝过去,重新建立软连接;如果没有,去网上随便找找,一般都能找到的。
原则上来讲,只要是高于等于libstdc++.so.6.0.22的版本都可以。
我这边查找了一下,服务器里是有的,所以我直接拷贝了,执行以下代码
sudo cp yourfilelocation/lib/libstdc++.so.6.0.24 /usr/lib/x86_64-linux-gnu/
cd /usr/lib/x86_64-linux-gnu
sudo rm libstdc++.so.6
sudo ln libstdc++.so.6.0.24 libstdc++.so.6
这个问题解决掉,上面那个“no module named ‘matlabengineforpython3_5’”就解决了,可见这个no module named matlab…就是因为缺少GLIBCXX_3.4.22引起的。