凌的博客

您现在的位置是: 首页 > 学无止境 > python > 

python

pyqt5程序打包成exe

2019-08-24 python 2266

首先输入下面的命令,如果pyinstaller没有下载,请pip install pyinstaller

pyinstaller -F -w -i img.ico main.py
或
pyinstaller -F -c -i img.ico main.py
(建议先用-c,这样如果打包不成功的话可以看到哪里有错)



  • -F 指只生成一个exe文件,不生成其他dll文件

  • -w 不弹出命令行窗口

  • -i 设定程序图标 ,其后面的ico文件就是程序图标

  • main.py 就是要打包的程序

  • -c 生成的exe文件打开方式为控制台打开。


执行完这个命令之后,会生成window.spec这个文件

如果程序执行时出现,"超过最大递归深度",这个时候,要去生成的window.spec中更改一些参数

首先 导入sys这个模块

import sys
sys.setrecursionlimit(5000) #深度
a = AnaLysis(['window.py'],   # 要注意,执行的文件是py文件
                    excludes = ['urllib3'],  # 一般会自动调用这个库,如果没有调用,就要手动加上
                    noarchive = False)    # 表示启动程序默认关闭控制台

第二步: 在Terminal终端输入命令: pyinstaller window.spec     # 这个时候就会生成exe可执行文件

如果启动执行文件加载不出图片,将除了新生成的build,dist以外的所有的文件或引用文件,复制到dist文件夹中,打包结束.


加 -F 虽然是生成了单个exe可执行文件,看上去很清爽,但是这个命令它把所有的环境都整合在了一起,如果我们的程序比较大的话,启动时就会非常慢(如果你的电脑性能一般的话,加载时间会更长),因为它加载的数据都是静态加载的,需要去封装的包里一个个的去查找,所以速度变慢了. 所以,去掉 -F 之后,我们的启动速度流畅无比,体验效果也大大提升.去掉它之后,生成的dist文件中你程序中要用到的环境都会被放在dist中,这个时候所用到的环境就变成了动态加载的,速度就跟你用代码启动程序的速度是一样的.



文章评论

0条评论