Python代码打包成EXE可执行文件(避开打包文件太大的坑)

1 篇文章 0 订阅
​​​​​​​

目录

一、博主的成长经历

 二、虚拟环境下打包的好处

 三、pyinstaller的基础用法

四、虚拟环境打包操作实例

五、成果展示


欢迎大家来观栏~  ——随乔木凉夏

一、博主的成长经历

博主最初使用pyinstaller打包py文件的时候,用的很是顺心,命令行复制粘贴,回车键一敲,不用多久,一个exe文件就生成好了。

但是,那个时候博主还是小小白,比小白还菜一丢丢,一个py文件代码内容量很少,顶多 import 一个 requests 模块,re 模块 正则表达式匹配处理一下字符串,生成一个简单的爬虫脚本。(我的启蒙老师是打包一个火车票查询脚本~)

到后来学习 pygame 模块的时候,自己写了一个消消乐游戏,当时花了点时间搭好框架,可以看到游戏效果的时候,忍不住要给它打包成exe文件,然后结果就芭比扣了/(ㄒoㄒ)/~~

当时我整整等了有三分钟将近,是的,正像你想的那样,生成的exe文件特别大,记得好像是300MB左右,然后你运行它你会发现真的很卡,直接抓狂!!!

下面这个是在虚拟环境下打包好的,可以看到它只有11MB.

 

 

 二、虚拟环境下打包的好处

1、方便管理和迁移

2、可以与系统的Python解释器进行区分,避免版本冲突

3、搭建虚拟环境,只保留被打包文件所依赖的第三方库,有效减少exe占用空间

(比如博主安装了Anaconda,如果不使用虚拟环境打包,必然会发生多余的模块/库被打包到我们的exe文件里面,特别的沉重,运行的时间也会变得很长!)

 三、pyinstaller的基础用法

1、-F参数  (将py文件打包成一个单独的可执行文件,打包完成会在当前目录下生成两个文件夹 build 和 dist ,dist文件夹中就是我们的exe可执行文件)

pyinstaller -F "你的py文件路径(绝对路径和相对路径都可以)"
"""
建议大家的路径中不要有中文,不然很有可能在路径这里出错~
"""

2、-w参数  (隐藏命令行/执行窗口,程序在后台运行,所有的print打印会被隐藏)

pyinstaller -F -w "你的py文件路径(绝对路径和相对路径都可以)"
"""
建议大家的路径中不要有中文,不然很有可能在路径这里出错~
"""

博主这次要打包的正好是一个用Python标准GUI库 Tkinter 写的一个GUI应用程序,会用到这个参数~

3、-i参数  (给应用程序添加图标,要求是.ico格式)

pyinstaller -F -w -i "你的ico图标路径" "你的py文件路径(绝对路径和相对路径都可以)"
"""
建议大家的路径中不要有中文,不然很有可能在路径这里出错~
"""

我给大家提供一个支持在线JPG转ICO的网站,当然大家也可以使用格式工厂,还有一个简单粗暴的方法,那就是直接把我们的jpg、png图片后缀改成.ico~

JPG转ICO - 在线转换图标文件

4、-onefile参数  (将所有依赖的模块一同打包进我们的exe可执行文件里面,不存放在另外的文件夹中,即只生成一个exe文件)

 注意:当我们把所有依赖库都打包进一个exe文件,且以隐藏CMD窗口方式执行时会出现错误,导致程序无法正常运行,所以需要用到 subprocess 模块来执行CMD命令:

import subprocess 
cmd = '你的CMD命令'
res = subprocess.call(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

四、虚拟环境打包操作实例

1、把我们需要打包的py文件和代码引用到的文件存放在同一个文件目录下(避免和其他文件搞混)

2、新建一个准备当虚拟环境的文件夹,我这里命名为venv

 

 3、终端进入到我们的虚拟环境文件夹,以下3种方法都可以

①直接进入到venv文件夹,在上方文件路径那一栏输入cmd,按Enter键(回车)进入

② 右键点击计算机开始图标,点击终端,Windows PowerShell(I)、Windows PowerShell(管理员)(A)两个都可以,然后输入命令回车进入:

cd "虚拟环境文件夹的绝对路径" 

 

③ 直接在venv文件夹内鼠标右键选择在当前目录下打开终端,由于博主这里安装了MobaTerm,我就直接用这个打开了~

 

以上就是三种终端进入venv虚拟环境文件夹的方法啦~

4、终端进入venv虚拟环境 文件夹后,使用pip命令安装pipenv库,用于创建虚拟环境

(博主这里之前已经安装过了~)

pip install pipenv

5、输入命令建立虚拟环境

pipenv install

6、输入命令进入虚拟环境

pipenv shell

我们可以看到我们的文件夹路径前面多了一个 (venv-N-la2ZAF) ,代表我们已经进入到虚拟环境中~

7、在虚拟环境通过pip安装py文件中所有用到的模块(一般只需要安装第三方模块)

pip install 【py文件用到的模块】

为了避免漏掉模块没有安装,博主建议大家全部安装一遍,像博主这里导入的模块有:

tkinter
base64
re
json
requests
PIL(对应的是Pillow模块)
os
werkzeug
selenium
tqdm

出现这样的报错,不用担心,其实这是告诉我们这个模块不需要另外安装~

8、虚拟环境安装pyinstaller模块,用于打包py文件

pip install pyinstaller

9、把我们的py文件和其他所有要用到的文件复制到venv虚拟环境文件夹

  

10、虚拟环境使用pyinstaller打包文件

pyinstaller -F -w -i "你的ico图标路径" "你的py文件路径(绝对路径和相对路径都可以)"

以我要打包的文件为示范~

pyinstaller -F -w -i "img\\Logo.ico" "login.py"

打开dist文件夹就可以看到我们生成的exe可执行文件啦~

这里我们可以看到,exe可执行文件大小为18.8MB,大小真的特别可观~

11、把py文件引用到的所有文件复制到dist文件夹(和exe可执行文件同一文件目录)

 

直到这里,我们的exe可执行文件就真正完成可以运行啦,现在让我们去测试一下~

五、成果展示

双击运行一下,有点小激动~

 

 

 

 

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随乔木凉夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值