pyinstaller
库可以很方便的将python代码打包成exe可执行文件。
一般用Pyinstaller打包会同时生成build、dist文件夹和.spec文件,dist文件夹里边是我们最终想要的结果。
1. 安装pyinstaller
pip install pyinstaller
2. 打包为单文件
2.1 pyinstaller参数作用
- -F 表示生成单个可执行文件
- -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
- -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧
- -c –console, –nowindowed 使用控制台,无界面(默认)
- -p 表示你自己自定义需要加载的类路径,一般情况下用不到
- -i 表示可执行文件的图标
- 其他参数,可以通过pyinstaller --help查看
2.2 打包命令
pyinstaller -F -i favicon.ico test.py
3. 打包为文件夹
# 将 test.py 打包
pyinstaller test.py
打包的时候,程序同路径下会生成一个同名的.spec
文件,我们可以通过修改这个文件来添加我们需要添加资源的文件。
3.1 Spec文件分析
.spec
文件中主要包含4部分:Analysis、PYZ、EXE、COLLECT
- Analysis:主要是分析py文件的依赖信息
- PYZ:是一个
.pyz
的压缩包,包含程序运行需要的依赖 - EXE:是根据上述两项内容而生成的
- COLLECT:主要是输出信息
3.2 配置文件详解
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['test.py'], # 要打包.py文件名列表,和test.py同级可以不同添加
pathex=[], # 项目路径
binaries=[],
datas=[('D:\\static\\logo.ico','static'),('D:\\config.ini','.')], # 存放的资源文件(图片、文本等静态文件),将'logo.ico'打包之后放在static目录,将config.ini打包之后放在跟目录
hiddenimports=['pandas'], # 解析模块时可能会遗漏某些模块,造成打包后执行程序时出现类似No Module named xxx,这时就需要在hiddenimports中加入遗漏的模块
hookspath=[],
runtime_hooks=[],
excludes=[], # 去除不必要的模块import,在excludes中添加此模块
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
# .pyz的压缩包,包含程序运行需要的所有依赖
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
# 根据Analysis和PYZ生成单个exe程序所需要的属性及其配置
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='xxx', # 生成exe文件的名字
debug=False, # debug模式
strip=False,
upx=True,
console=False, # 是否在打开exe文件时打开cmd命令框
icon='D:\xx.ico' ) # 设置exe程序图标,ico格式文件(16*16)
# 收集前三个部分的内容进行整合,生成程序所需要的依赖包,及资源文件和配置
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='hello')
运行pyinstaller xxx.spec
生成一个dist文件夹和一个build文件夹,生成的exe文件在dist文件夹中。
- 📢博客主页:https://blog.csdn.net/qq233325332
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢本文由 陌北v1 原创,首发于 CSDN博客🙉
- 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨