Python打包exe文件(如何打包成较小文件)

本文介绍了如何使用AnacondaPrompt和Pyinstaller将Python程序打包成exe文件,包括带控制台和不带控制台的打包方式,以及设置图标。针对打包文件大的问题,提出了创建和使用虚拟环境来减少不必要的库,从而减小打包体积。同时,文章还讲解了如何在虚拟环境中安装所需库和处理版本冲突。
摘要由CSDN通过智能技术生成

本文所用Python环境为anaconda

1、一般打包步骤:

从开始菜单运行“Anaconda Prompt” 转到所需运行的文件路径

0)pip install Pyinstaller         #安装打包库,第一次选装,以后就不需要了
1)Pyinstaller -F my_python.py     #打包exe,如果.py文件不在运行的文件夹中,需要填写绝对路径\文件名
2)Pyinstaller -F -w my_python.py  #不带控制台的打包
3)Pyinstaller -F -w -i my_ico.ico my_python.py #打包指定exe图标打包
4)如果有自定义模块,将自定义模块放入Lib\site-packages文件夹下(where python查看安装路径)

ico图片生成:把其他格式图片转成ico格式:https://app.xunjiepdf.com/img2icon/
打包生成的文件在上述运行的路径下的dist文件夹下,大概300~400M,而且打包速度很慢

2、Python打包为什么大?
网上查了一下解释型语言大都是这样,只不过Python尤其突出,要解决大而慢,只能用编译型语言,如C,C++,甚至VB都好很多,体积最小的是汇编;另外,因为Python里安装了很多库,打包的时候会把很多不必要的模块也打包进去,所以打包出来的文件很大。
因此我们可以模拟一个新环境(虚拟环境),在其中只安装我们本次打包所必要的工具包即可。

3、安装虚拟环境
Python创建虚拟环境的方法有很多,本文用的是在Anaconda中用conda安装虚拟环境,会把虚拟环境的目录生成在anaconda安装目录下的env目录下。
从开始菜单运行“Anaconda Prompt”,出现的界面输入创建虚拟环境的指令。输入以下命令1创建了一个名字为auto,且基于python版本3.9的虚拟环境。在创建过程中需要回复(y/n)y

1)conda create -n auto python==3.9  #创建虚拟环境
2)conda activate auto               #激活虚拟环境
3)conda deactivate                  #退出虚拟环境
4)conda info -e                     #查看所有的虚拟环境 
5)conda remove -n auto -all         #删除虚拟环境,-all的意思是,将整个虚拟环境连同相关文件也一起删除

4、安装所需的库
运行上面命令2激活名为auto虚拟环境,输入conda list可以查看当前虚拟环境里已经安装的库。
安装运行Python所需的包,包括Pyinstaller包,不需要一次把所有以后可能用到的包都安装好,那样就失去了虚拟环境的纯洁性了,仅安装本次打包所需的包即可,不需要的可以卸载掉,尤其是一些大包,比如pandas。

5、在虚拟环境打包
在虚拟环境激活的状态下,运行一般打包步骤,注意自定义模块需放入虚拟环境所在的Lib\site-packages文件夹下,可通过where python查看虚拟环境安装路径。
为了防止打包时候有些库没安装好,可以先在虚拟环境中执行一下Python脚本(Python 文件路径\.py文件名),运行无误的话再打包,比较保险。
虚拟环境运行可能有些包会报错,原因大多为包的版本和默认环境不同,可通过conda list分别在虚拟环境和默认环境查看包的版本,然后强制在虚拟环境安装和默认环境相同的版本,如下命令

pip install --force-reinstall -v "openpyxl==3.1.0"

或者先卸载再安装

pip uninstall openpyxl
pip install openpyxl==3.1.0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值