Python调用matlab.engine踩的坑

安装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引起的。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值