步骤:
1. pip安装支持的pyinstaller,“pip install pyinstaller”可先看一下底部的报错情况2,预先装好合适版本的pyinstaller
2.准备一段要实现的代码,文件名为loooookfile.py 如下,是实现:将指定路径下的所有文件的完整路径打印出来,之后倒计时10s关闭窗口
1 import os 2 import time 3 4 welcome = """ 5 #################################################### 6 # # 7 # Ruirui's pyinstaller performance progrem # 8 # # 9 # ver.20210302 # 10 #################################################### 11 """ 12 print(welcome) 13 14 15 16 target_path = input("please input the target file_path :") 17 for root,dir,filename in os.walk(target_path): 18 for name in filename: 19 print(os.path.join(root,name)) 20 21 for i in range(10, 0, -1): 22 print(" after {}s the window will be closed".format(i), end="", flush=True) 23 time.sleep(1) 24 print(" time is up !!!")
3.然后进入cmd窗口,cd到loooookfile.py文件所在的目录下,执行
$ pyinstaller -F -c Loooookfile.py
会生成一个如图所示的文件及目录
所生成的.exe文件就在dist文件夹中
4.如果需要换环境使用,就把当前文件所在的文件夹打包压缩发送到新环境即可
有可能出现的报错:
1.
即报错说dll文件的Permission denied
----解决办法是以管理员权限打开cmd,然后执行操作步骤3即可
2.报错IndexError:tuple index out of range
是因为版本不支持,默认安装的是最新版(4.几的版本),无法支持3.6版的python
----解决办法是去官网:https://github.com/pyinstaller/pyinstaller 下载源码,替换python安装目录下的Libsite-packagePyinstaller
3.如果运行结果并不如预期,出现了闪现就关闭
----可以尝试在cmd窗口运行exe文件,看看会出现什么问题
4.如果引入了其他的第三方库或者自己写的py文件或音视频图片,运行时并没有成功调用到
----可以留下原py文件或音视频文件及.spec文件,其他的文件夹删除,然后把引用到的文件加入到.spec的Analysis的datas中,格式也有要求的,要写成如图所示的格式(否则会报错“ValueError: too many values to unpack (expected 2)”)然后通过打包.spec文件来运行(打包命令为: pyinstaller xxxx.spec )
5.如果报错说no module named xxxx
----一般这种情况下是缺少import的包,有2种方法,(前提是编译所在的电脑上安装了这个包的)1.重新编译,在指令最后加上参数--hidden-import 待导入的包名 2.删掉多余文件,留原py文件和spec文件,在spec文件的hiddenimport一栏中填入待导入的包名,然后通过打包.spec文件来运行(打包命令为: pyinstaller xxxx.spec )
【关于参数的使用】
-F 生成多个文件,可以使文件分布更清晰
-D 生成一个文件夹,但文件内容会很杂乱不清晰
-w 窗口模式打包,不显示控制台
-c 后面跟图标的路径,作为.exe文件的icon
--hidden-import 后面跟应用所需要的包(可以先默认打包,如果报错缺少哪个包再去.spec中编辑)