1 方式汇总
命令行打包 | + pyinstaller 模块; | + Lex 说麻烦; |
---|---|---|
软件打包 | + auto-py-to-exe; | + Lex 用过了说好; |
2 pyinstaller模块
2.1 准备工作
2.1.1 提取包
- 命令行安装
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 试了一次没好使呢,就手动加了
- 文件 | 设置 | 项目 | Python解释器 | 添加 | pyinstaller
2.2 文件打包
2.2.1 打包命令
pyinstaller -F -c main.py -y
第一参数 + -F 打包单独一个文件+ -D 打包目录 |
第二参数 + -w 非命令行+ -c 控制台 |
第三参数 + -y 确定 |
---|---|---|
- 不使用
-w
的话,程序运行时会一瞬即逝,看不见报错;正式发行则不需要。
2.2.2 文件生成
- 顺利完成后会生成下列文件:
build
目录;dist
目录;
其中我们想要的打包文件会生成在dist
目录中。
2.2.3 文件使用
.exe
直接使用;- ocr 终端使用:
# 第一步:清屏
cls
# 第二步:选择文件所在目录
cd .\dist\main\
# 第三步:运行文件
.\main.exe
# 辅助:返回上一级文件夹
cd ..
cd ..\.. # 返回两级
3 auto-py-to-exe
2.1 准备工作
2.1.1 安装软件
pip install auto-py-to-exe
2.1.2 启动软件
auto-py-to-exe
2.1.3 添加必要 dll
- 项目中所导入的第三方库中所包含的所有
.dll
文件,并不会打包进来。解决方法为:- 需要在软件的“附加文件”种手动添加;
2.1.4 冻结路径
- 凡涉及路径的代码,都可能报错。解决方法为:
- 尽可能统一设置一个全局路径,便于修正(可选);
- 将路径设置为
if
结构,打包和直接录入的路径分别讨论(必须);
import sys
if getattr(sys, 'frozen', None):
basedir = sys._MEIPASS # 打包后用的这个路径
else:
basedir = os.path.dirname(__file__) # 直接运行的时候用的这个
# --------------------------<路径设置>-------------------------- #
path = basedir + '\\resource\\static\\'
2.2 软件功能
2.2.1 脚本位置
- 选择入口函数文件的路径。通常是
main.py
;
2.2.2 单文件
<单目录>
- 生成出一个文件夹;
<单文件>
- 生成出一个
.exe
文件;
<注释>
- <单目录>生成的文件通常会比<单文件>生成的文件运行的要快一些,但<单文件>会好看;
2.2.3 控制台窗口
<基于控制台的>
- 生成出来的程序在运行时会同步显示控制台;
<基于窗口的>
- 不含控制台咯;
<注释>
- 控制台配合
print
可方便观察代码的运行,分析 bug;成品可做成<基于窗口的>;
2.2.4 图标
- 图标需在入口函数同级别中保存为
.ico
;
图标下载,ICON(PNG/ICO/SVG/矢量) easyicon 免费下载 - 爱给网
2.2.5 附加文件
<添加文件>
- 项目中所导入的第三方库中所包含的所有
.dll
文件,并不会打包进来。我们需要在这里选择器文件路径进行添加; - 选择文件时,可通过“Ctrl”多选;
- 选择完文件,会生成两个文本框。左侧为所要添加的文件;右侧为生成的文件中文件的位置,默认为
.
,如需要安装根目录以外的位置,需要修改;
<添加目录>
- 原理同<添加文件>;
2.2.6 高级
<—uac-admin>
- 遇权限问题,需开启。如:绑定句柄时闪退;
<—add-data>
- 遇目录文件问题,需开启;
<—hidden-import>
- 遇到丢包问题,需要填入包的名字(第三方库除外)(
import
后或from
后的名字) - 【此功能用于读取加密文件】
<注释>
- 已开启的功能会在<当前命令>中体现出来;
2.2.7 设置
<将配置导出到JSON文件>
- 将当前所有在 Auto Py to Exe 中的设定保存起来,方便下次直接调用;
<从JSON文件倒入配置>
- 将保存好的配置直接导入程序;
2.2.8 当前命令
- 主要显示<高级>中设置的选项;
2.3 文件打包
2.3.1 文件生成
- 打包会在“脚本位置”根目录下创建了一个
output
的新文件夹,打包文件在其中; - 文件打包后,点击右下角“打开输出目录”,即可打开
output
文件夹;