目录
一、博主的成长经历
二、虚拟环境下打包的好处
三、pyinstaller的基础用法
四、虚拟环境打包操作实例
五、成果展示
欢迎大家来观栏~ ——随乔木凉夏
一、博主的成长经历
博主最初使用pyinstaller打包py文件的时候,用的很是顺心,命令行复制粘贴,回车键一敲,不用多久,一个exe文件就生成好了。
但是,那个时候博主还是小小白,比小白还菜一丢丢,一个py文件代码内容量很少,顶多 import 一个 requests 模块,re 模块 正则表达式匹配处理一下字符串,生成一个简单的爬虫脚本。(我的启蒙老师是打包一个火车票查询脚本~)
到后来学习 pygame 模块的时候,自己写了一个消消乐游戏,当时花了点时间搭好框架,可以看到游戏效果的时候,忍不住要给它打包成exe文件,然后结果就芭比扣了/(ㄒoㄒ)/~~
当时我整整等了有三分钟将近,是的,正像你想的那样,生成的exe文件特别大,记得好像是300MB左右,然后你运行它你会发现真的很卡,直接抓狂!!!
下面这个是在虚拟环境下打包好的,可以看到它只有11MB.
文章来源地址https://www.toymoban.com/news/detail-493721.html
二、虚拟环境下打包的好处
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 "虚拟环境文件夹的绝对路径"
文章来源:https://www.toymoban.com/news/detail-493721.html
③ 直接在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可执行文件就真正完成可以运行啦,现在让我们去测试一下~
五、成果展示
双击运行一下,有点小激动~
到了这里,关于Python代码打包成EXE可执行文件(避开打包文件太大的坑)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!