python打包代码做.exe文件

步骤:

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("\r after {}s the window will be closed".format(i), end="", flush=True)
23     time.sleep(1)
24 print("\r  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安装目录下的Lib\site-package\Pyinstaller

 

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中编辑)

 

posted @ 2021-03-02 13:55  -Ruirui-  阅读(254)  评论(1编辑  收藏  举报