python打包exe的心得提花

一   Pyinstaller指令打包

通常打包exe方法都是通过Pyinstaller来实现的

 

1.安装Pyinstaller
首先我们要先安装Pyinstaller,直接在cmd使用pip命令

pip install pyinstaller
如果网速太慢可以切换国内源来加速,本文其他部分直接使用国内源,不再重复注释。

pip install -i https://pypi.douban.com/simple/ pyinstaller #豆瓣源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller #清华源
Pyinstaller打包步骤

2.、cmd切换到我们刚刚放文件的目录

3、执行命令Pyinstaller -F -w -i my.ico py_my.py,

打包exe后执行即可

Pyinstaller参数详解
说回刚刚执行的命令

Pyinstaller -F -w -i chengzi.ico py_word.py
压缩打包
好了,小伙伴们

来到了最激动人心的时刻,刚刚生成的exe实在太大了,300多M的软件程序想用微信传一下都费劲。

我也试过很多方法,比如:修改spec文件自定义打包、pipenv 虚拟环境、使用开源的upx压缩等等,但是往往要么过程比较麻烦,要么成功率不高(压缩成不成功全看脸)。

而我要分享的,是自己一直在用的,最简单且成功率极高的方法——conda创建虚拟环境。

Python打包为什么大?
在压缩打包之前,先简单说一下为什么Python打包过大?

Python打包exe,不但体积大而且运行奇慢。解释型语言大都是这个样子,只不过Python尤其突出。要解决大而慢,只能用编译型语言,如C,C++,甚至VB都好很多,体积最小的是汇编。[1]

此外,还有知乎大佬说是因为“Anaconda里内置了很多库,打包的时候打包了很多不必要的模块进去,要用纯净的Python来打包。”

所以我们可以模拟一个新环境,其中只安装我们本次打包所必要的工具包即可。

那最适合的就是——虚拟环境了!

虚拟环境
Python创建虚拟环境的方法有很多,而我是个Anaconda忠实用户,如果你跟我一样,那就简单了。(大家也可以使用Virtualenv、Pipenv来设置虚拟环境,善用搜索,方法大同小异)

先记几个命令,很简单

conda create -n 虚拟环境名字 python==3.6 #创建虚拟环境

conda activate 虚拟环境名字 #激活虚拟环境

conda deactivate #退出虚拟环境
从开始菜单运行“Anaconda Prompt”,出现的界面输入创建虚拟环境的指令。成功创建了一个名字为aotu,且基于python版本3.6的虚拟环境。

在创建过程中需要回复(y/n),Yes,再激活虚拟环境

conda安装的虚拟环境,会把虚拟环境的目录生成在anaconda安装目录下的env目录下。

当然我们也可以在刚刚的窗口,使用命令conda info –envs,来查看conda环境下所有的虚拟环境

安装所需的库
上面我们已经创建并激活了名为aotu虚拟环境,输入conda list可以查看当前虚拟环境里已经安装的库。

我们打开所要打包的Python脚本,对比上图,发现pandas,docx这两个库还需要额外安装。当然,也不能缺了打包必不可少的pyinstaller库。

待打包脚本

安装库的过程不再赘述

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-docx

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
安装后再看

已成功安装,还有一些因为这几个库所附带安装的,就不管他们了。

Pyinstaller打包步骤
这里就不再重复了,只换个苹果图标试试

Pyinstaller -F -w -i apple.ico py_word.py

pyinstaller相关参数

-F, –onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
-D, –onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
-K, –tk 在部署时包含 TCL/TK
-a, –ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码.
-d, –debug 产生debug版本的可执行文件
-w,–windowed,–noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
-c,–nowindowed,–console
使用控制台子系统执行(默认)(只对Windows有效)

pyinstaller -c xxxx.py

pyinstaller xxxx.py –console

-s,–strip 可执行文件和共享库将run through strip.注意Cygwin的strip往往使普通的win32 Dll无法使用.
-X, –upx 如果有UPX安装(执行Configure.py时检测),会压缩执行文件(Windows系统中的DLL也会)(参见note)
-o DIR, –out=DIR 指定spec文件的生成目录,如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录.如果没有指定,而当前目录不是PyInstaller的根目录,则会输出到当前的目录下.
-p DIR, –path=DIR 设置导入路径(和使用PYTHONPATH效果相似).可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源
–icon=<FILE.ICO>
将file.ico添加为可执行文件的资源(只对Windows系统有效),改变程序的图标 pyinstaller -i ico路径 xxxxx.py

–icon=<FILE.EXE,N> 将file.exe的第n个图标添加为可执行文件的资源(只对Windows系统有效)
-v FILE, –version=FILE 将verfile作为可执行文件的版本资源(只对Windows系统有效)
-n NAME, –name=NAME 可选的项目(产生的spec的)名字.如果省略,第一个脚本的主文件名将作为spec的名字

 

 

二  工具auto-py-to-exe 打包

1.auto-py-to-exe简介

auto-py-to-exe 是一个用于将Python程序打包成可执行文件的图形化工具。本文就是主要介绍如何使用 auto-py-to-exe 完成 python 程序打包。auto-py-to-exe 基于 pyinstaller ,相比于 pyinstaller ,它多了 GUI 界面,用起来更为简单方便

2.安装 auto-py-to-exe

首先我们要确保我们的 python 环境要大于或等于 2.7 然后在 cmd 里面输入:pip install auto-py-to-exe ,输入完成之后,pip 就会安装 auto-py-to-exe 包了。安装完成之后,我们就可以在 cmd 输入:auto-py-to-exe,来启动 auto-py-to-exe 程序了。

出现上述图片,auto-py-to-exe 就安装成功了。

3.auto-py-to-exe 部分选项介绍

在使用 auto-py-to-exe 打包 python 程序的时候,有许多配置选项需要我们去指定,能正确知道这些选项的作用是十分重要的。下面我将介绍其中一些重要的选项。

(1) Script Location

Script Location 主要是指定我们要打包的 python 文件

(2) Onefile

Onefile 下有两个选项,分别是:One Directory 和 One File

如果选择 One Directory ,那么程序打包完成后会是一个文件夹的形式展现

如果选择 One File ,那么程序打包完成后就一个 .exe 文件

(3) Console Window

Console Window 主要设置打包程序运行时,是否出现控制台

Console Based : 当打包的程序运行时会显示一个控制台界面

Window Based (hide the console) : 会隐藏控制台界面,主要用于带有 GUI 的 python 程序打包

(4) Icon

用于指定打包程序的图标

4.auto-py-to-exe 实战

本节主要以一个计算器程序来介绍如何使用 auto-py-to-exe 来打包程序。

auto-py-to-exe 打包程序主要分 3 部分,分别是:

打开 auto-py-to-exe

配置打包选项

查看打包效果

1.打开 auto-py-to-exe

打开 cmd ,输入:auto-py-to-exe 打开 auto-py-to-exe 后,我们就要进行配置选择了。

2.配置打包选项

 

在打包时,我们要进行的配置主要有:

Script Location

Onefile

Console Window

Script Location 选择程序的主程序,在计算器项目里,我们选择的是 main.py

Onefile 选择 One File ,因为一个文件看起来比较简洁

 

 

配置完成之后点击 CONVERT .PY TO .EXE 按钮

这样我们就完成一个计算器项目的打包。

3.查看打包效果

程序完成打包后,我们可以点击 OPEN OUTPUT FOLDER 按钮,然后就会打开打包文件的路径。

在打包文件目录中,我们可以看到一个 my.exe 文件,这就是我们打包文件。

点击 my.exe ,就可以看到一个exe程序了。

至此,打包工作圆满完成。

三 总结一下

这是我总结的python打包方式,比较简单,适合我这样的初学小白。

不足之处,望大家批评指正。

 

本文为原创文章,转载请注明出处!