将Python打包成可执行文件

Python 是一门解释性语言,代码的执行需要依赖解释器,而部分操作系统暂未内置对Python的支持,所以当需要将 Python 发送给别人执行的时候,打包成 exe 是一个好选择。

Pyinstaller

Pyinstaller 支持 Python 2/3 ,多平台,可打包可在相同平台分发的可执行文件(如在 Windows 系统上打包的文件可以在其它 Windows 上执行)。

安装

首先,安装 Pyinstaller 库:

pip install pyinstaller

安装完成后,就可以对项目文件进行打包了。

打包成一个文件

pyinstaller -F main.py

main.py 是必选参数,为待打包的 python 文件。

打包过程 Pyinstaller 会在项目文件夹生成一批文件:

  • dist 中包括最终编译的结果;
  • build 目录下是生成的一些过程文件。

等文件。

打包前的项目目录
打包后的项目目录

-F 意味着将所有文件打包成一个 *.exe 文件,dist 下只会有一个可执行文件;若不使用此参数,则会在 dist 目录下生成一个和 *.py 文件一致的文件夹,其内的文件就是生成的文件。

不使用 -F 参数生成的目录

自定义图标

pyinstaller -i icon.ico main.py
默认图标(左),与
自定义图标(右)的效果

-i 可以指定可执行文件的图标。无论是否打包为一个文件,都均适用。

-w 可以隐藏执行时的命令提示窗口。

其它

使用 pyinstaller 过程中遇到的坑实在不少,总结了一些经验:

  • 自定义图标后不生效,可能是尺寸问题,根据Windows的规则,根据缩放比例不同会使用不同的图标尺寸。所以建议设置多个图标分辨率一遍覆盖各个尺寸;
  • 有时候生成的dist和build目录并不在项目目录,可以留意是不是命令提示符处于不同的目录导致的。比如在命令提示符处于 c:\user 下,但使用了绝对路径选中打包其它目录的 *.py 文件。这样生成的目录都会在 c:\user 下。

参考资料

官方文档:
https://pyinstaller.readthedocs.io/