python应用---将py文件打包成exe应用程序
写好了python程序,想将它像一个app一样双击就可以运行,或者想发给一个没有python编辑器的朋友,该如何操作?python开发人员就考虑了这种情况,提供了一系列的库以供使用者解决这些问题。
2023年5月8号更新:
问题1:
如果程序是多线程进行的,需要在原始程序里加入multiprocessing.freeze_support(),不然打包好的exe虽然不会报错,但程序无法理想的运行。
问题2:
调用gpu运行程序出现的问题。
要用到gpu运行exe的话,python进行打包会感觉到鸡肋。因为首先你得确定程序的环境,比如我原始的程序环境使用的是tensorflow-gpu==1.5.0,那电脑的cuda 9.0,cudnn 7系列,vs2017或者2019都需要先安装上才能调用起来gpu。
此外,电脑的显卡也需要配套。不然会出现以下的错误:
也有人遇到过这种情况,说tensorflow-gpu==1.5.0版本的,显卡不能是30开头的。
我电脑是1060的显卡,能用。但租了一个3090的服务器,窗口显示是调用了gpu,但还是出现“Blas GEMM launch failed”那种错误。
问题3:
TypeError: main() takes 0 positional arguments but 1 was given。
解决方法:此博客。
----------------------------------------------------补充结束-----------------------------------------------------------------
写好了python程序,想将它像一个app一样双击就可以运行,或者想发给一个没有python编辑器的朋友,该如何操作?
python开发人员就考虑了这种情况,提供了一系列的库以供使用者解决这些问题。
这里介绍两种情况的打包:
- 单个py文件打包成EXE应用程序
- 包含多个文件的python程序打包成EXE应用程序
使用软件:pycharm
目录
单个py文件打包成EXE应用程序
1、下载工具包
个人习惯在pycharm的终端里安装库,在cmd里面也是可以的。如果太慢的话,可以换源
pip install pysimplegui-exemaker -i https://pypi.tuna.tsinghua.edu.cn/simple
很顺利的出现了successfully的字样。
2、 运行打包工具
也是在终端,输入python -m pysimplegui-exemaker.pysimplegui-exemaker
python -m pysimplegui-exemaker.pysimplegui-exemaker
出现这个窗口:
点击“Browse”,选中需要打包的py文件。在"Source Python File"内就会出现路径
下面那个"Icon File"就是最终exe文件的图标,就像qq的图标是那只企鹅的意思。图片后缀名需要是.ico格式的。如果没有,不追求美观的话,也可以不用输入。
3、大功告成
点击左下角的"Make EXE",等待几秒即可。
界面没有一堆的warn和error,最后一行有“DONE”,就成功了。
生成的exe文件位置是和它的py文件所在目录是一致的。
双击就可以使用。完全可以直接发送给朋友,朋友也不需要再去下载相关的软件和库之类麻烦操作。
包含多个文件的python程序打包成EXE应用程序
遇到复杂的代码就是第二种情况了,操作也不是很繁琐。
1、整理文件
非py文件的全部都放进和py文件并列的文件夹里,且确保整理完之后可以正常运行(警告最好也不要出现)
2、下载工具包
终端里安装pyinstaller
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
在终端进入需要打包文件的所在路径 通过cd命令进去
3、生成.spec文件:
使用下面的命令生成.spec文件。
pyi-makespec -w xxx.py
这里的xxx代表主函数。
在我这里的主函数是reco.py。
4、修改.spec文件
用记事本打开刚生成的xxx.spec文件,将所有的py文件手动输入到‘Analysis’、所有的非py文件放入’binaries’,将包含py文件、非py文件、xxx.spec文件的路径输入到‘pathes’
这里需要注意一下 :
如果最后运行的时候需要出现控制台,那么还要在.spec文件里修改图片里的这行。
5、生成EXE可执行文件
输入命令:
pyinstaller -D reco.spec
开始打包。出现successful就是打包成功。
最后生成的EXE文件会出现在dist文件夹里,双击运行。
双击运行后可能会出现的错误
双击运行后也可能出现令人发指的红色叉叉 。
那就仔细看看弹出的窗口里的英文是什么,再对症下药。
我遇到过以下几种情况:
1、
这个根据路径把相关的插件删掉就行。
我这里就把_gru_ops.dll删掉了。因为弹窗最后出现了这个.dll未找到。它的位置一般是在dist里面找。
2、
这是程序内有input类的交互语句,窗口没打开。根据第四步里的注意事项修改spec就行。然后再执行一遍第五步的语句。
3、
出现no model of什么什么的错误,要么就是你打包的程序里面需要这个库,你没有在终端下载(在终端输入pip install 需要的库,再从头开始进行打包一次)。或者在spec里面的hiddenimports里输入需要的库再重复一遍第五步的语句就行。例如hiddenimports=[‘numpy’]。
提醒: 尽量减少打包的py文件
更多推荐
所有评论(0)