简介
有时候需要在未安装Python环境的平台上运行py程序,使用pyinstaller打包很方便,但打包后的可执行文件实在是太大了。原因在于打包时pyinstaller本就已经关联了很多的python内联模块,加上我们项目中存在过多第三方类库,打包的时候又会引入一些不必要的类库,导致打包出来的程序变的很大。
解决方法
1.使用upx压缩
打包的时候使用UPX压缩文件。那么UPX是什么呢?UPX是一款非常不错的程序文件压缩工具,使用upx压缩过的可执行文件体积缩小50%-70% ,可以大大减少了磁盘占用空间。
如果没有下载过upx,那我们每次使用pyinstaller把python文件打包成exe可执行程序时都能看到下面这句提示,UPX is not available,也就是upx不可用。
那upx怎么和pyinstaller配合使用呢?
我们需要先下载UPX执行文件,可以自己去搜或者在https://upx.github.io/里面下载自己想要的版本,下载下来的是一个压缩包,我们只需要解压后把里面的upx.exe文件复制到pyinstaller.exe同个文件夹(应该是Scripts文件夹)内即可。
pyinstaller默认会从执行目录里搜索upx执行文件,如果找到upx,会对生成的可执行文件进行压缩。现在我们重新执行pyinstaller打包命令,如果像下图这样就说明使用upx配置成功
简介
有时候需要在未安装Python环境的平台上运行py程序,使用pyinstaller打包很方便,但打包后的可执行文件实在是太大了。原因在于打包时pyinstaller本就已经关联了很多的python内联模块,加上我们项目中存在过多第三方类库,打包的时候又会引入一些不必要的类库,导致打包出来的程序变的很大。
解决方法
1.使用upx压缩
打包的时候使用UPX压缩文件。那么UPX是什么呢?UPX是一款非常不错的程序文件压缩工具,使用upx压缩过的可执行文件体积缩小50%-70% ,可以大大减少了磁盘占用空间。
如果没有下载过upx,那我们每次使用pyinstaller把python文件打包成exe可执行程序时都能看到下面这句提示,UPX is not available,也就是upx不可用。
那upx怎么和pyinstaller配合使用呢?
我们需要先下载UPX执行文件,可以自己去搜或者在https://upx.github.io/里面下载自己想要的版本,下载下来的是一个压缩包,我们只需要解压后把里面的upx.exe文件复制到pyinstaller.exe同个文件夹(应该是Scripts文件夹)内即可。
pyinstaller默认会从执行目录里搜索upx执行文件,如果找到upx,会对生成的可执行文件进行压缩。现在我们重新执行pyinstaller打包命令,如果像下图这样就说明使用upx配置成功
显示UPX 可用
可以看到,下面是两个分别是使用了upx压缩和没有使用upx压缩的exe
文件大小对比
因为文件本身不大,所以看不出来太大差别。但如果是200M的文件,估计压缩效果很大。
2.使用虚拟环境
用pipenv创建python虚拟环境。因为在打包环境下会引入了很多不必要的文件,一块打包会导致在生成exe文件过大,而在虚拟纯净环境里打包程序可以有效避免。
步骤1:首先在需要作为虚拟环境的文件夹内执行pip install pipenv
命令
步骤2:在安装成功后使用pipenv shell
命令,进入虚拟环境
步骤3:进入虚拟环境后,先使用pipenv install pyinstaller
安装pyinstaller(这是在虚拟环境内安装,和外面环境安装的互不干涉)
步骤4:安装你python文件需要的库,安装命令是pipenv install 包名
,和原来pip安装库的命令差不多,但要注意不是pip是pipenv
最后,就可以在虚拟环境内使用pyinstaller+文件名 进行打包了,打包好的exe程序在当前目录下的dist文件夹内。
3.使用魔法
因为在打包的过程中,我眼睁睁看着那些我根本没有用到的模块却被引入了程序中,就想着把源码中没有用到的模块全卸载了,然后再执行打包程序。结果发现有奇效!还真是麻雀啄牛屁股,开了眼了。
显示UPX 可用
可以看到,下面是两个分别是使用了upx压缩和没有使用upx压缩的exe
文件大小对比
因为文件本身不大,所以看不出来太大差别。但如果是200M的文件,估计压缩效果很大。
2.使用虚拟环境
用pipenv创建python虚拟环境。因为在打包环境下会引入了很多不必要的文件,一块打包会导致在生成exe文件过大,而在虚拟纯净环境里打包程序可以有效避免。
步骤1:首先在需要作为虚拟环境的文件夹内执行pip install pipenv
命令
步骤2:在安装成功后使用pipenv shell
命令,进入虚拟环境
步骤3:进入虚拟环境后,先使用pipenv install pyinstaller
安装pyinstaller(这是在虚拟环境内安装,和外面环境安装的互不干涉)
步骤4:安装你python文件需要的库,安装命令是pipenv install 包名
,和原来pip安装库的命令差不多,但要注意不是pip是pipenv
最后,就可以在虚拟环境内使用pyinstaller+文件名 进行打包了,打包好的exe程序在当前目录下的dist文件夹内。
3.使用魔法
因为在打包的过程中,我眼睁睁看着那些我根本没有用到的模块却被引入了程序中,就想着把源码中没有用到的模块全卸载了,然后再执行打包程序。结果发现有奇效!还真是麻雀啄牛屁股,开了眼了。
文章转载于Pyinstaller打包python文件太大?教你三个小技巧有效减小文件体积 - 知乎