centos下pyinstaller打包python程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos下pyinstaller打包python程序相关的知识,希望对你有一定的参考价值。

参考技术A

python的程序的缺点是: 需要提供源码,如果不想让源码被第三方获得,可以将其打包成二进制文件的形式。
pyinstaller就可以完成这个要求。

vim test.py

直接用python程序调用,结果如下:

大写的-F表示生成单一文件。

运行结果:

生成的可执行文件在dist目录中

https://www.pyinstaller.org/downloads.html
https://blog.csdn.net/aaronjzhang/article/details/8778338
https://www.cnblogs.com/LarryGen/p/5427102.html
https://www.cnblogs.com/alan-babyblog/p/5147770.html
https://www.cnblogs.com/zflibra/p/4180796.html

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了。

 




以上是关于centos下pyinstaller打包python程序的主要内容,如果未能解决你的问题,请参考以下文章

pyinstaller打包Django项目

《Python开发 - Python开发笔记》Python打包(PyInstaller)

《Python开发 - Python开发笔记》Python打包(PyInstaller)

虚拟环境下通过pyinstaller 打包

虚拟环境下通过pyinstaller 打包

Python虚拟环境下使用Pyinstaller打包