pyinstaller打包exe(32位和64位)和运行太慢等问题解决

您所在的位置:网站首页 win7运行慢怎么解决问题 pyinstaller打包exe(32位和64位)和运行太慢等问题解决

pyinstaller打包exe(32位和64位)和运行太慢等问题解决

2024-06-27 09:08| 来源: 网络整理| 查看: 265

pyinstaller打包exe(32位和64位)和运行太慢等问题解决

文章目录 pyinstaller打包exe(32位和64位)和运行太慢等问题解决 前言一、pyinstaller的安装二、pyinstaller使用介绍三、打包32位和64位exe四、打包的exe文件太大的问题五、打包的exe文件启动运行太慢总结

前言

因为涉及到需求,因此笔者研究很久的python打包exe,目前有很多打包方法例如py2exe,pyinstaller,cx_Freeze,nuitka对python文件进行打包成可执行文件。但目前最常用而已也是最好用的是pyinstaller,因此笔者就来简单介绍下pyinstaller的使用和遇到的一些坑

一、pyinstaller的安装 pyinstaller是python直接可以调用的一个包,直接在cmd里pip install pyinstaller即可,目前pyinstaller支持的python版本为3.5-3.8,即3.5以上的任何python版本都能直接pip安装使用pyinstaller。pyinstaller -v查看是否安装成功在这里插入图片描述 二、pyinstaller使用介绍 参数Value-F,-onefile产生单个的可执行文件-D,–onedir产生一个目录(包含多个文件)作为可执行程序-a,–ascii不包含 Unicode 字符集支持-d,–debugdebug 版本的可执行文件-w,–windowed,–noconsolc指定程序运行时不显示命令行窗口(仅对 Windows 有效)-c,–nowindowed,–console指定使用命令行窗口运行程序(仅对 Windows 有效)-o DIR,–out=DIR指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件-p DIR,–path=DIR设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径-n NAME,–name=NAME指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字 Column 1Column 2centered 文本居中right-aligned 文本居右

这里常用的为-F 和-D, 项目结构: 在这里插入图片描述

cmd到当前项目路径pyinstaller -F xxx (xxx为项目主程序)在这里插入图片描述等待运行结束项目中多了几个文件在这里插入图片描述dist、build和main.spec,我们需要的exe文件在dist里在这里插入图片描述pyinstaller -D xxx (这个是打包出多个文件,而不是只有一个可执行文件,运行的时候每个文件都不能少,特点:文件小,运行速度快。缺点:文件多)打包结果在这里插入图片描述 三、打包32位和64位exe

在许多场景可能会用到32位的exe,因此需要打包32位的exe,当然取决于python的版本环境了,python如果是32位的那么打包出来的exe也是32位的,64位同理。为了方便我们使用anaconda(anaconda安装和使用教程)创建虚拟环境来打包32位exe。

先搭好好32位python环境和安装各种需要的包

查看是否位32位python环境在这里插入图片描述

输入pyinstaller打包即可在这里插入图片描述

把打包好的exe文件用记事本打开,如果没有这种打开方式那就直接打开一个记事本,然后把exe文件拖到记事本,用文本编辑器打开(以UTF-8编码),搜索关键词PE(PEL对应32位,PEd对应64位)在这里插入图片描述 一个32位的exe就打包好了

四、打包的exe文件太大的问题

一个就只有几十行代码的程序,打包出来竟然有300多MB,这完全超出了我们的,查了很多资料才知道,pyinstaller会把python环境中的很多项目没有用到的包都一起打包进去,这样就增大了exe的大小了, 解决方法: 使用anaconda创建一个单独干净的虚拟环境,然后在这个单独环境里安装相应的需要用到的包,然后对项目进行打包,这就是我们前几篇文章提到的为啥要用anaconda的原因,方便我们管理每个项目的Python环境和对呀的包,几乎都要坐到每个项目单独对呀一个虚拟环境。这样打包出来就只有10MB左右在这里插入图片描述

五、打包的exe文件启动运行太慢

在大多数的情况下,我们的项目是很大的,不仅仅是只有几十行代码而已。当我们pyinstaller -F xxx打包成单一的exe文件后会遇到一个问题,就是明明在程序里运行瞬间就启动了,然而运行exe文件的时候却发现运行的很慢,几乎要1、2分钟左右才会开始启动执行代码。那是因为: -D:生成一个文件夹,里面是多文件模式,启动快。 -F:仅仅生成一个文件,不暴露其他信息,启动较慢。 我们都是只想要一个文件,而不想看到太多的附带文件,如何即想要单一文件运行,又加快运行速度呢 解决方法:

使用pyinstaller -D xxx 打包,生成一个文件夹在这里插入图片描述使用Enigma Virtual Box.exe这个文件夹里的文件进行重新打包 百度网盘:https://pan.baidu.com/s/1uX6pH-MS9a4KLEbLvxcsZA 提取码:ppsg把文件夹下的所有文件(除开xxx.exe文件#即主程序的exe文件,我这里是companyid.exe)拖进这个软件里在这里插入图片描述直接点确定即可,这个不影响选择主程序文件名称在这里插入图片描述点击打包即可在文件夹下看到最后打包好的companyid_boxed.exe在这里插入图片描述最后把这个文件取出来即可,其他的文件都可以删除掉,这样就解决了单一可执行文件exe运行太慢的问题。 总结

笔者每天都在不断填坑,希望读者可以用到,可以给读者带来作用是笔者每天不断填坑的动力,最后祝读者早日脱坑!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3