700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python打包为exe可执行文件(含打包图片方法 + 彻底隐藏cmd黑窗口 + 解决打包程序过大)

Python打包为exe可执行文件(含打包图片方法 + 彻底隐藏cmd黑窗口 + 解决打包程序过大)

时间:2021-04-21 10:23:22

相关推荐

Python打包为exe可执行文件(含打包图片方法 + 彻底隐藏cmd黑窗口 + 解决打包程序过大)

pyinstaller模块打包exe

基本使用方法:

安装模块:pip install pyinstaller命令行cdPython主程序文件所在的目录使用格式:pyinstaller -F -w -i x.ico xxx.pypyinstaller的参数讲解:第一个参数(必选)-F:生成单个可执行文件-D:生成多个可执行文件第二个参数-c:文件执行时携带cmd黑窗口(默认)-w:文件执行时不启用cmd黑窗口第三个参数-p:自定义需要加载的类路径(基本不用)第四个参数-i x.ico:为可执行文件添加图片,此处x绝对路径第五个参数(必选)xxx.py:需要打包的py文件,xxx主程序文件名 运行后会生成:build:内含生成的项目文件dist:内含生成的exe可执行文件xxx.spec:打包过程日志

打包图片方法:

因使用pyinstaller打包exe时,不能打包图片,解决方法: 采用base64动态生成图片 使用以下代码生成图片的base64码:

import base64def pic2py(picture_names, py_name):write_data = []for picture_name in picture_names:filename = picture_name.replace('.', '_')with open("%s" % picture_name, 'rb') as r:b64str = base64.b64encode(r.read())# 注意这边 b64str 一定要加上.decode()write_data.append('%s = "%s"\n' % (filename, b64str.decode()))with open(f'{py_name}.py', 'w+') as w:for data in write_data:f.write(data)# 需要转码的图片:pics = ["favicon.ico"]# 将pics里面的图片写到 image.py 中pic2py(pics, 'image') print("转码完成...")

转码后会生成image.py文件,将该文件加载到需要使用图片的程序中即可

import os# 导入图片转码后所在的py文件from image import *# 创建临时图片with open(r'D:/favicon.ico', 'wb') as w: # 创建临时的文件# 把这个one图片解码出来,写入文件中去tmp.write(base64.b64decode(favicon_ico))# 运行上面程序后,会在open的路径处生成这张图片,所以需要用到这张图片时直接用图片的绝对路径即可# 图片用后即删os.remove('D:/favicon.ico')

彻底隐藏cmd黑窗口:

打包成的exe文件中如果使用了os.system()调用cmd命令时,即使设置了参数-w但调用时还是会一闪而过,解决方法: 安装模块:pip install subprocess导入模块import subprocess使用subprocess.run("需要执行的cmd命令", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)即可解决

打包exe的目标程序过大

安装pipenv模块:

pip install pipenv

基本使用方法:

进入py主程序目录,使用指令:pipenv --python 3.8,创建一个Python3.8的纯净虚拟环境 这里python的版本号,由自己Python的版本而定 使用指令:pipenv shell,进入pipenv的命令行安装自己程序需要用到的模块:pip install xxx记得安装打包模块:pip install pyinstaller使用打包指令进行打包:pyinstaller -F xxx.py

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。