ubuntu下使用pyinstaller将python文件打包成exe(py文件中含有keras框架的代码)
Posted 充实迷倒樱花树
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu下使用pyinstaller将python文件打包成exe(py文件中含有keras框架的代码)相关的知识,希望对你有一定的参考价值。
一 使用工具
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了。
以上是关于ubuntu下使用pyinstaller将python文件打包成exe(py文件中含有keras框架的代码)的主要内容,如果未能解决你的问题,请参考以下文章
Pyinstaller - 通过 .bat 文件隐藏和运行可执行文件
将 --user 与 --prefix 错误与 setup.py install 结合使用