问题先上图,本人自己写了一个操作mysql的界面系统,但是打包中出现了很多的问题,打包好的exe程序运行时报错如下,从网上搜索了很多方法都不管用,很多文章答案同出一辙没有实际操作性,就算解决了问题也只是运气原因,本文将记录本人遇见问题到解决问题的整个思路。
首先简单介绍下pyinstaller的基础使用,这里我使用如下命令安装:
pip3 install pyinstaller
pyinstaller -F *.py #打包成一个exe文件
pyinstaller -F -w *.py #打包好的exe文件,启动时不显示cmd命令行
pyinstaller -F -w *.py -p dir #导入路径
起初我单纯的以为是环境没配好等问题,网上搜索解决方案也是五花八门,一一尝试都没有作用,于是开始自行摸索,首先是打包好运行时会闪退,我们将-w命令去掉,闪退的一瞬间截图命令行所出现的报错内容,可得知是mysqldb包没有搜索到。
之后从这个问题角度开始深入,是什么原因导致了mysqldb包没有导入,那只有一个可能,pyinstaller作为一个打包模块,并不会十分智能去加载所有模组,通过查看pyinstaller官方给出的各参数可以发现,其中有导入路径的参数,动了动小脑袋瓜子想到可行性,于时我便尝试找到mysqldb的路径,添加在-p命令之后。
参数详情见官网:
https://pyinstaller.readthedocs.io/en/v3.3.1/usage.html
可惜可惜还是没成功,但是此时此刻我又想到了另一种可能性,在python中操作mysql的模组有很多,或许是mysqldb自己的原因导致了失败,于时我换成了pymysql模组,再次尝试,终于功夫不负有心人,我成功了!
在此查看pymysql模组所在目录
pyinstaller -F -w main.py -p C:\Users\22798\AppData\Local\Programs\Python\Python37\Lib\site-packages
打包所生成的exe文件自动存放在项目文件夹中的dist目录下
双击成功运行,问题解决
一个致力于改善csdn原创环境的菜鸟。
欢迎评论交流,宝贝们点点赞!