【移植代码】matlab.engine报错、numpy+mkl安装、Qt platform plugin报错总结

本文主要是介绍【移植代码】matlab.engine报错、numpy+mkl安装、Qt platform plugin报错总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • numpy报错
    • numpy安装
    • PyQt5报错
    • matlab.engine无法加载
      • 确认配置版本
      • 进行配置
    • matlab文件路径缺失
    • vscode无法debug3.7以下版本
    • 总结

今天的任务是复现师姐的代码,代码在服务器的环境下可以跑,而我要做的,就是将环境和源码配置好,在我自己的电脑上跑起来。本以为只是一个虚拟环境复制的工作,没想到有这么大的坑。

已经将服务器上的整个虚拟环境evns的文件夹拷贝了过来,并进入该环境测试。

numpy报错

pythonnumpy版本不匹配的时候,经常会出现莫名的报错,此时需要卸载重装:
numpy卸载的时候往往要卸载两遍
pip uninstall numpy命令卸载的时候,卸载过后可能发现pip list中还有一个版本,需要再卸载一次。

numpy安装

直接用pip install安装的话可能会自动安装最新版本的,还是对不上,因此需要参考这篇博客的做法。用numpy+mklscipy的第三方库:https://www.lfd.uci.edu/~gohlke/pythonlibs/
选择自己的环境对应的版本下载即可,cp36python=3.6win_amd64win是64位。image.png
下载好之后,把这两个包放在python安装的Scripts目录下。
如果是自己的虚拟环境,那么就在自己虚拟环境对应的Scripts目录下。
安装时,首先要在终端将工作空间定位到我们放安装包的目录下,然后再进行安装。
image.png

PyQt5报错

调试的时候会有这种报错。
image.png
用网上的其他方法都不太好
解决办法:检查pip list 是否缺少PyQt5

pip install PyQt5
pip install pyqt5-tools

记着更换源会快一些

pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5
pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5-tools

不知道在服务器上怎么跑起来的,不过在自己电脑上查看pip list确实没有PyQt5

matlab.engine无法加载

因为代码中有涉及用python执行matlab的.m文件的情形,因此在反复matlab.engine报错之后,突然意识到,自己电脑上python和matlab是没有像服务器上的那样已经配合好了的。
详细请看这篇博客。

确认配置版本

python版本和matlab版本是有一一对应关系的,否则无法建立联系,对应关系见下。https://www.mathworks.com/content/dam/mathworks/mathworks-dot-com/support/sysreq/files/python-compatibility.pdf

image.png
python 与 matlab 版本对应关系

由图可知Python3.8解释器需要 matlab2020b以上版本,Python3.7解释器需要 matlab2019a以上版本等等依此类推。

根据这张图确定你的python解释器去安装对应的matlab版本。

进行配置

matlab的安装方法就不累赘了,这里已默认你安装好了对应版本的matlab。

matlab里面找到python engine

大部分python库都是通过pip来安装的,而matlab自R2014b以后引入了MATLAB engine这一功能, 提供了对Python的支持,matlab.engine的安装不是通过pip安装的。

matlab安装路径\extern\engines \python 文件夹
image.png

cmd方法配置连接

进入控制台,**如果用了虚拟环境记得一定要conda activate进入虚拟环境。**进去找到python engine的位置

见下图红色方框,在后面输入语句,见下图椭圆方框,enter 确认。

python setup.py install

image.png
enter确认后发现cmd界面运行一堆语句,咱不用管,见下运行过程
image.png

…R2021a-py3.7.egg-info,这告诉我们python3.7 解释器可以调用matlab了,注意一定要符合自己所需python的版本哦。

image.png

运行完之后我们发现之前的python engine路径多了些文件,见下图,相比之前多了一个build文件夹

image.png

至此python配置matlab就已经配置完成了,就可以用python 调用 matlab方法 进行调用matlab函数了。

matlab文件路径缺失

最后执行到某句的时候,出现了这个报错:

未定义与 'double' 类型的输入参数相对应的函数 'stblfit'

看报错位置是.m文件内部,就意识到了应该是文件夹没有加入matlab的执行路径内。

点这里的设置路径
R(IG_MB3CJGF(J7US{4UE8L.png


将自己python代码的文件夹(也就是要执行的.m文件所在的文件夹添加进去,就可以顺利跑了)

vscode无法debug3.7以下版本

在调试代码的时候,突然发现更新之后的vscode给我说python版本是3.6,已经不支持了?
查了一下是vscode扩展版本的问题,只需要重新安装低版本的python插件即可。
照着这个

总结

移植代码真的很多坑啊,不只是python环境的问题,各种依赖包、和matlab的联动,版本不一等等。花了一整个白天的时间去调试:( 。或许用docker能更快移植呢?

这篇关于【移植代码】matlab.engine报错、numpy+mkl安装、Qt platform plugin报错总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/183503

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是