python 上常见的打包方式目是通过 pyinstaller 来实现的。
pip install pyinstaller
或者用镜像下载:
# 清华源pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/
然后pip install pyinstaller,安装完后执行 pyinstaller -F samp.py命令,这里的samp.py为程序执行的主文件。
执行完毕会发现生成了 3 个文件夹:dist,build,samp.spec文件
在dist里面我们可以看到生成了一个exe可执行文件。
2、双击 exe 就可以运行成功了。
3、如果出现闪退,文件路径找不到的问题,那么就在脚本里添加以下脚本:
import os import sys def app_path(): if hasattr(sys, 'frozen'): return os.path.dirname(sys.executable) # 使用pyinstaller打包后的exe目录 return os.path.dirname(__file__) # 没打包前的py目录然后重新执行上一步的打包流程pyinstaller -F samp.py命令。打包成功如下显示:
![]()
4、要把生成的exe文件从dist文件中移出来,和原主文件在同路径下:
![]()
5、当程序正常运行后,运行完结果后,窗口很快自动关闭,可以通过在主代码里最后一行添加一行代码,使得窗口不再自动关闭:
input('Press Enter to exit...')6、然后重复以上步骤,重新打包可执行文件,这样就完整了。
补充:
打包好的文件,我们只需要将生成的三个文件,以及代码中涉及到的数据集等拷贝到一起,就可以发给别人点击exe文件运行了。不需要将整个工程打包给别人。这样核心代码也不至于泄露给别人。
![]()
常用参数做简要介绍:
| 参数 | 说明 |
|---|---|
| -F | 产生单个的可执行文件 |
| -D | 产生一个目录(包含多个文件)作为可执行程序 |
| -a | 不包含 Unicode 字符集支持 |
| -d | debug 版本的可执行文件 |
| -w | 指定程序运行时不显示命令行窗口(仅对 Windows 有效) |
| -c | 指定使用命令行窗口运行程序(仅对 Windows 有效) |
| -o | 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件 |
| -p | 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径 |
| -n | 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字 |
打包一个带自定义icon的exe可执行文件
pyinstaller -F -i icon.ico 测试.py
