天天看点

python生成exe文件

在使用过程中,我们有时候会需要将python程序发给没有安装python环境的用户使用,这时后我们就需要将其代码打包成exe发给对方。

安装 PyInstaller

Python 默认并不包含 PyInstaller 模块,因此需要自行安装 PyInstaller 模块。

安装 PyInstaller 模块与安装其他 Python 模块一样,使用 pip 命令安装即可。在命令行输入如下命令:

pip install pyinstaller

强烈建议使用 pip 在线安装的方式来安装 PyInstaller 模块,不要使用离线包的方式来安装,因为 PyInstaller 模块还依赖其他模块,pip 在安装 PyInstaller 模块时会先安装它的依赖模块。

运行上面命令,应该看到如下输出结果:

Successfully installed pyinstaller-x.x.x

其中的 x.x.x 代表 PyInstaller 的版本。

pyinstaller -v

在 PyInstaller 模块安装成功之后,在 Python 的安装目录下的 

Scripts(D:\Python\Python36\Scripts)

 目录下会增加一个 pyinstaller.exe 程序,接下来就可以使用该工具将 Python 程序生成 EXE 程序了。

PyInstaller生成可执行程序

PyInstaller 工具的命令语法如下:

pyinstaller 选项 Python 源文件

不管这个 Python 应用是单文件的应用,还是多文件的应用,只要在使用 pyinstaller 命令时编译作为程序入口的 Python 程序即可。

PyInstaller工具是跨平台的,它既可以在 Windows平台上使用,也可以在 Mac OS X 平台上运行。在不同的平台上使用 PyInstaller 工具的方法是一样的,它们支持的选项也是一样的。

接下来使用命令行工具进入到此 app 目录下,执行如下命令:

pyinstaller -F checker_param.py

执行上面命令,将看到详细的生成过程。当生成完成后,将会在此 checker_param目录下看到多了一个 dist 目录,并在该目录下看到有一个 checker_param.exe 文件,这就是使用 PyInstaller 工具生成的 EXE 程序。

170692 INFO: Building COLLECT COLLECT-00.toc completed successfully.
python生成exe文件

 在命令行窗口中进入 dist 目录下,在该目录执行 app.exe ,将会看到该程序生成如下输出结果:

Microsoft Windows [版本 10.0.18363.1679]
(c) 2019 Microsoft Corporation。保留所有权利。

C:\Users\Rnanprince\dist\checker_param>checker_param.exe
{'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}
5
[1, 2, 3, 4]
[1, 2, 3.0, 4]

C:\Users\Rnanprince\dist\checker_param>
           

PyInstaller 不仅支持 -F、-D 选项,而且也支持如表 1 所示的常用选项。

表 1 PyInstaller 支持的常用选项

-h,--help 查看该模块的帮助信息
-F,-onefile 产生单个的可执行文件
-D,--onedir 产生一个目录(包含多个文件)作为可执行程序
-a,--ascii 不包含 Unicode 字符集支持
-d,--debug 产生 debug 版本的可执行文件
-w,--windowed,--noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c,--nowindowed,--console 指定使用命令行窗口运行程序(仅对 Windows 有效)
-o DIR,--out=DIR 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
-p DIR,--path=DIR 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径
-n NAME,--name=NAME 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

参考:http://c.biancheng.net/view/2690.html