一. Pyinstaller 简介

作用:

PyInstaller 将 Python 应用程序及其所有依赖项捆绑到单个软件包中。用户无需安装 Python 解释器或任何模块,即可运行打包后的应用程序。

支持情况(兼容性):

PyInstaller 支持 Python 3.8 及其更新版本;

能正确捆绑 numpy、matplotlib、PyQt、wxPython 等许多主流 Python 包。

PyInstaller 已经过 Windows、MacOS X 和 Linux 测试。

注意事项:

不过,它并不是一个交叉编译器;要制作 Windows 应用程序就需要在 Windows 上运行 PyInstaller,要制作 Linux 应用程序就需要在 Linux 上运行它,依此类推。


一般来说,我们使用Pyinstaller打包出于如下原因:

  1. 君子式防止他人得到该项目的源代码(很容易破解);
  2. 开发过程中用了一些第三方库
    如果把做好的代码项目供他人使用,需要对方电脑上拥有Python环境;
    而经过Pyinstaller打包后就可以在单独的文件夹中打开.exe文件(开箱即用)即可

二. Pyinstaller 安装及使用

下面来一段Pyinstaller的使用示例:

  1. 如图,这是一段简单的Python项目代码,作用是打开我的网站(opentap.top)
1
2
3
4
5
6
import webbrowser	#导入了webbrowser模块

websites = ["https://opentap.top"] #定义了一个包含一个网站链接的列表

for site in websites: #使用for循环遍历这个列表
webbrowser.open(site) #对列表中的每个网站链接,调用webbrowser.open()函数打开网页
  1. 我想点击某个快捷方式直接先从桌面打开我的网站,于是我使用Pyinstaller打包:

pyinstaller安装完毕

[^注]: 下载失败的请 配置国内镜像源 或 自行科学上网

  1. 首先让我们学习一下pyinstaller打包的基础指令:

格式:pyinstaller xxx.py(项目名) -X -Y -Z(各种命令模块)

一些简单有效的的命令模块:

-F, --onefile

创建一个文件捆绑的可执行文件。

人话:-F

把生成的文件放入同一个文件夹中

-w, --windowed, --noconsole

Windows 和 Mac OS X:不为标准 I/O 提供控制台窗口。上 Mac OS 这也触发了构建 Mac OS .app 捆绑包。在 Windows 上,这个 如果第一个脚本是“.pyw”文件,则会自动设置选项。这 选项在 *NIX 系统上被忽略。

人话:-w

打开 生成的.exe可执行文件 时 隐藏 cmd(windows控制台) 窗口

-i <FILE.ico or FILE.exe,ID or FILE.icns or Image or “NONE”>, --icon <FILE.ico or FILE.exe,ID or FILE.icns or Image or “NONE”>

FILE.ico:将图标应用于 Windows 可执行文件。

FILE.exe,ID:提取 带有 EXE 中 ID 的图标。

FILE.icns:将图标应用于 .app 捆绑包 Mac 操作系统。

如果输入的图像文件不是平台格式(ico 在 Windows 上,在 Mac 上,PyInstaller 尝试使用 Pillow 来翻译 图标转换为正确的格式(如果安装了 Pillow)。使用“NONE”表示不 应用任何图标,从而使操作系统显示一些默认值(默认:apply PyInstaller 的图标)。此选项可以多次使用。

人话:-i [文件名].ico

怎么让生成的.exe程序带上自己想要的图标?

  • 把那张图片文件格式改为.ico
  • 把图片.ico与代码.py放在同一个文件夹中(也就是把图片.ico放入项目文件夹里)
  • 终端命令中加入 -i xxxx(图片名).ico
  1. 打开终端 – 输入pyinstaller打包命令 – 回车

打开终端 -- 输入pyinstaller打包命令 -- 回车

1
pyinstaller opentap.top.py  -F -w -i ciallo.ico

如图,打包成功

  1. 整理出单独文件 方便今后文件管理

未完待续

1
pyinstaller Hands.py -- add-data="D:\Desktop\try\Lib\site-packages\mediapipe\modules;mediapipe/modules" -F -w -i ciallo.ico
1
pyinstaller Gesture_volume_control.py -- add-data="D:\Desktop\try\Lib\site-packages\mediapipe\modules;mediapipe/modules" -F -w -i ciallo.ico

参考文献:

  1. pyinstaller — PyInstaller 6.5.0 文档

  2. 使用 PyInstaller | PyInstaller 中文文档 (gitbook.io)