五、python小功能记录——打包程序

这篇文章只讲pyinstaller

场景一  只打包单个文件

场景二  需要打包资源文件

场景三  资源文件中有逻辑程序,不能采用场景二方式

使用pyinstaller打包Python程序

场景一  只打包单个文件

 

安装工具 :pip3 install pyinstaller

在Python程序文件夹上(不点进去)按住shift并且右键,在弹出的选项中点击"在此处打开命令行窗口"或者“在此处打开PowerShell窗口”,CMD进来也可以

打包命令:pyinstaller -F -w (-i icofile) filename

filename表示你的Python程序文件名

-w 表示隐藏程序运行时的命令行窗口(不加-w会有黑色窗口)

括号内的为可选参数,-i icofile表示给程序加上图标,图标必须为.ico格式

icofile表示图标的位置,直接放在程序文件夹里面,打包的时候直接写文件名

最简单例如:pyinstaller -F test.py

输入完成,按回车自动打包

如果是很多文件组成的系统,只要用pyinstaller -F -w 入口主程序.py 即可

打包的exe在dist里面

 

 

 

 

 

 

 

场景二  需要打包资源文件 官网


先执行了打包命令,目录下会出现{你的py文件名}.spec,截图中其它文件请忽略

 

 

 修改.spec,使其包含其它静态资源文件

就是改datas,数组格式,括号内第一个参数是文件名,第二个是文件夹名

 

 

 执行 pyinstaller WebOfficeInstall.spec 将把文件打包进exe里

场景三  资源文件中有逻辑程序,不能采用场景二方式

主要是解决逻辑程序中的路径问题

通过这个方法可以把 音频,视频,图片,文本,压缩包,配置文件,脚本 等各种文件打包进exe中。
运行时会自动解压到当前目录,如果程序需要调用这些文件时,就可以调用了。

1. 转换为Base64 数据

这里有两个网站, 都是可以将任意文件转换为 Base64 数据文本的。
进到下面这其中一个网站中, 分别将你的文件进行转换, 然后复制得到的数据。

https://www.giftofspeed.com/base64-encoder/
https://www.zhangxinxu.com/sp/base64.html

 

 

 

2.在程序中使用生成的数据

首先呢,创建一个.py自建模块,在里面创建变量,分别把从网站得到的Base64数据以字符串的形式粘贴到变量里面。

注意:
1. 变量的类型必须是 字符串。
2. 一个变量的base64数据 只能放在一行,不要有分行。

有时候转的文件较大,粘贴的时候显得很卡,也没办法

 

 

 

例子:
下面是一个简单的运用,我创建了一个叫“get_file.py”的程序; 这个程序运行时,import了刚才创建的自建模块 DataFile,然后再把将文件写入到指定的位置。程序运行末尾结束了,就删除这些文件。

 1 get_file.py
 2 
 3 import os
 4 import base64
 5 import DataFile          # 导入自建模块 "DataFile.py"
 6 
 7 
 8 def write_file(data, route):
 9     get_file = base64.b64decode(data)        # 将base64数据进行解析
10 
11     with open(route, 'wb') as f_Obj:        # 输出文件到指定位置
12         f_Obj.write(get_file)
13 
14 #-----调用函数,传入对应的 base64数据 和 输出文件的位置,生成依赖的资源文件-----#
15 write_file(DataFile.text, "./测试文本.txt")
16 write_file(DataFile.zip_pack, "./测试压缩包.zip")
17 write_file(DataFile.picture, "./测试图片.jpg")
18 
19 
20 #-----程序运行区域-----#
21 print("Hello world !")
22 input()  # 暂停
23 
24 
25 #-----运行结束后删除目录下的依赖文件-----#
26 os.remove("./测试文本.txt")
27 os.remove("./测试压缩包.zip")
28 os.remove("./测试图片.jpg")

3.打包

pyinstaller -F test.py

 

参考:

https://blog.csdn.net/COLDRAIN_END/article/details/104385472

https://blog.csdn.net/jayden_gu/article/details/94134409

 

posted @ 2019-04-11 11:10  清风神剑  阅读(394)  评论(0编辑  收藏  举报