pyinstaller模块打包exe
基本使用方法:
- 安装模块:
pip install pyinstaller
- 命令行
cd
到Python主程序文件
所在的目录
- 使用格式:
pyinstaller -F -w -i
-
pyinstaller
的参数讲解:
-
第一个参数(必选)
:
-
-F
:生成单个可执行文件
-
-D
:生成多个可执行文件
-
第二个参数
:
-
-c
:文件执行时携带cmd黑窗口(默认)
-
-w
:文件执行时不启用cmd黑窗口
-
第三个参数
:
-
第四个参数
:
-
第五个参数(必选)
:
- 运行后会生成:
-
build
:内含生成的项目文件
-
dist
:内含生成的exe可执行文件
-
:打包过程日志
打包图片和音频的方法:
- 因使用
pyinstaller
打包exe时,不能打包图片和音频,解决方法:
- 使用以下代码生成图片和音频的
base64
码:
import base64
def to_py(other_names, py_name):
write_data = []
for other_name in other_names:
filename = other_name.replace('.', '_')
with open(other_name, 'rb') as r:
b64str = base64.b64encode(r.read())
write_data.append(f'{filename} = "{b64str.decode()}"\n')
with open(f'{py_name}.py', 'w+') as w:
for data in write_data:
w.write(data)
names = ["test.mp3", ""]
to_py(names, 'base64_data')
print("转码完成...")
- 转码后会生成
base64_data.py
文件,将该文件加载到需要使用图片音频的程序中即可
import os
from base64_data import *
with open(r'D:/test.mp3', 'wb') as w:
w.write(base64.b64decode(test_mp3))
彻底隐藏cmd黑窗口:
- 打包成的exe文件中如果使用了
()
调用cmd命令时,即使设置了参数-w
但调用时还是会一闪而过,解决方法:
- 安装模块:
pip install subprocess
- 导入模块
import subprocess
- 使用
("需要执行的cmd命令", shell=True, stdin=, stdout=, stderr=)
即可解决
打包exe的目标程序过大
安装pipenv模块:
基本使用方法:
- 进入py主程序目录,使用指令:
pipenv --python 3.8
,创建一个Python3.8的纯净虚拟环境
- 这里
python的版本号
,由自己Python的版本
而定
- 使用指令:
pipenv shell
,进入pipenv的命令行
- 安装自己程序需要用到的模块:
pip install xxx
- 记得安装打包模块:
pip install pyinstaller
- 使用打包指令进行打包:
pyinstaller -F