ubuntu下使用pyinstaller将python文件打包成exe(py文件中含有keras框架的代码)

时间:2024-02-15 16:46:28

一 使用工具

pyinstaller, 在ubuntu上安装pyinstaller非常的简单,直接使用下面的命令即可

pip install pyinstaller

注意:推荐大家使用python3.0及以上的python版本(好像python3.6使用pyinstaller也存在一些问题),因为使用python2.7下的pyinstaller在封装的时候会提示缺失各种包等问题,然而直接使用python3.5下的pyinstaller进行封装就非常的流畅。

二 打包的方法

进入到需要打包的py文件的目录下,在命令行中运行:

pyinstaller 文件名.py(会生成三个文件夹,有用的是dist文件夹,在该文件夹下有一个和py文件同名的exe文件,就是打包生成的exe文件)

或pyinstaller -F 文件名.py(也会生成三个文件夹,有用的同样是dist文件,不同的是dist文件夹下只有一个exe文件)

pyinstaller含有的一些参数(来源与https://blog.csdn.net/qq_27833589/article/details/62898130):

-F的含义为将原文件打包为exe文件,这里还有其他几个可选参数
-D:创建一个目录,包含exe文件,但会依赖很多文件,这是默认选项
-c:使用控制台,这也是默认选项
-w:使用窗口,无控制台

三 遇到的问题

问题描述:按照上面的方法成功打包,但是在执行exe文件时出现了一个非常奇怪的问题,就是程序好像开启了多个进程来分别运行该程序一样,控制台窗口可以看到的是程序正在疯狂的不断重复的运行,而且重复运行不是一次结束后,立马接着执行,而是不等上次执行结束,就又开始执行了下一次。

问题查找:刚开始的时候,十分的迷,根本不知道怎么去寻找原因,后来在实验室大佬的指导下,一步一步的排除原因,最后终于找到是因为引入的一个工具包的原因,这个包是from sklearn import preprocessing用来对数据进行归一化。

结论:在使用pyinstaller时,不要在py文件中引用from sklearn import preprocessing包,尽量通过自己写函数来实现相应的功能(我就是这么做的,因为归一化还是比较好写的)。pyinstaller 可以将tensorflow和keras进行完好的封装,这点上不用怀疑pyinstaller的能力。

之前一直写C++,没有接触过python。最近几个月,用python写了一些功能,发现python真的太好用了,开始迷恋于python了。