最近导师让用labview编软件,由于python的火热,想用python试一下
软件环境:
pycharm 2019 社区版
matlabR2016b
python3.5(和matlab engine 匹配)
首先尝试直接Pyinstaller 打包
出现如下错误
Failed to execute script pyi_rth_qt5
按照网上常见方法方法设置路径后依然不行
pyinstaller --paths C:/****/Python/Python35-32/Lib/site-packages/PyQt5/Qt/bin -F -w ****.py
尝试打包
a = 1
b = 2
print(str(a+b))
成功
所以应该是程序的问题
修改程序内部再尝试
记pyqt5遇到的坑ImportError: unable to find Qt5Core.dll on PATH
程序按照上面这个博客提到的修改
import sys,os
if hasattr(sys, 'frozen'):
os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget,QFileDialog
from PyQt5.QtGui import *
from adder import Ui_MainWindow
import matlab
import matlab.engine
中间的 if 是加的
命令行输入:
pyinstaller -F -w -i 1.ico sucess_p_m.py
结果:
:
加上path
pyinstaller --paths D:\professionalsoft\anaconda\envs\py3.5\Lib\site-packages\PyQt5\Qt\bin -F -w -i 1.ico sucess_p_m.py
结果:还是不行 和上面错误一样
改变pyqt版本
本来是5.13.0 变成5.12.2
对应的 pyqt_tools 也变一下
还是不行
再次降级
出现正常的错误了,感觉胜利就在眼前,继续百度。
按照网上说法手动在文件内
from PyQt5 import sip
又出现新的错误
不过我觉得不调用MATLAB 的程序到这里应该可以成功打包了
继续尝试解决(PS.早上搞到下午了
尝试了网上各路方法之后,包括打包matlab成python库(这个我没试成功,方法是下面这个链接,打包方法可以参考一下)
python调用matlab方法
根据错误提示尝试这个解决方法(其实是一个比较大众的解决方法,但是对题了)
pyinstaller打包python文件后,运行出现"Failed to execute script xxx.exe"错误的解决方式
先pyinstaller 打包一遍,再将生成的.spec 文件中的隐藏导入设置为刚才没找到的模块,如下:
hiddenimports=[‘mlarray’]
修改后直接在命令行中输入 如下命令 基于修改过的.spec 继续打包
pyinstaller sucess_p_m.spec
双击刚才的exe文件
work 了,如下,是我编的简单的计算两个sin相加的程序,QT designer设计界面,pyqt包设计程序逻辑,计算调用matlab函数,并最终生成exe。大半天终于搞好了…
总结(三个主要问题)
1.最前面的设置路径最后我在产生exe的时候也没用,可能是我在程序内部设置了路径,这个我没搞清楚,以后再说。
2.主要是在于pyqt5-tools版本的问题
3.在打包exe时,有的包没打到,需要隐藏导入。
谢谢收看