在 Python中,我们可以使用各种工具来将 Python 代码打包成可执行文件,以便在没有 Python 解释器的环境中运行。接下来,我们将了解下如何在 Windows 和 Mac 系统上实现打包可执行程序:
- pyinstaller
- py2app
注意:pyinstaller 可以用于 linux、mac 平台程序打包,但是由于各种原因在我的 Macos big sur 11.6.8 上打包出来的程序命令行可执行程序执行没问题,但是 app 文件双击会出现闪退。所以,对于 Mac 系统我们使用 py2app 实现打包。
1. Windows 打包
首先:切换到项目环境中,并使用下面命令安装工具:
pip install pyinstaller==5.13.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
切换到项目目录下,制作可以双击运行的程序,这里有两种方式:
- 打包成单一文件:包含可执行程序、资源;
- 打包成多个文件:打包的结果包含可执行程序以及相关的动态库文件、资源。
1.1 打包成单一文件
# --noconsole 表示生成的可执行程序打开运行时,不显示命令行窗口 # --onefile 表示打包成一个可执行文件 pyinstaller --noconsole --onefile --name xxx main.py
打包过程结束之后,在项目目录下会出现 build 和 dist 两个目录,build 目录是打包过程中产生的临时文件(对我们无用),而在 dist 目录下则包含了生成的 exe 可执行程序。由于该程序运行过程中,需要用到 source 目录下的一些资源。
使用这种方式需要将程序所需要的资源文件拷贝到 dist 目录中,保证资源文件和 exe 文件在同一级目录。
1.2 打包成多个文件
# 去掉 --onefile 参数,增加 --add-data 参数 pyinstaller --noconsole --name plane --add-data source;source main.py
这种方式并不会将程序打包成一个 exe 文件,而是包含了 dll、exe、资源等文件组合而成的可执行程序,如下所示:
这种方式是可以支持 –add-data 参数,即打包时能够自动拷贝资源文件。
2. Mac 打包
首先:切换到项目环境中,并使用下面的命令安装 py2app:
pip install py2app==0.28.6
然后:在项目根目录编写 setup.py 文件,内容如下:
from setuptools import setup setup( # app : 入口文件 app=['main.py'], # data_files : 资源目录 data_files=['source'] )
最后,执行下面的命令,将会在项目目录下生成 dist 文件夹,双击 *.app 程序可直接运行:
python setup.py py2app