InstallForge下载详细使用教程》》 http://t.csdn.cn/FYc3a
将 PySide6 应用程序打包为 Windows 与 PyInstaller & InstallForge 将您的 PyQt6 应用程序转换为 Windows 的可分发安装程序
本教程也适用于 PyQt6 和 PySide2。
如果您无法与其他人共享自己的桌面应用程序,那么创建自己的桌面应用程序就没有太多乐趣 - 无论是商业发布,在线共享还是只是将其提供给您认识的人。共享您的应用程序可以让其他人从您的辛勤工作中受益!
好消息是,有一些工具可以帮助您使用Python应用程序做到这一点,这些应用程序与使用PyQt6构建的应用程序配合良好。在本教程中,我们将介绍最流行的打包 Python 应用程序的工具:PyInstaller。
本教程分为一系列步骤,使用 PyInstaller 首先将简单,然后越来越复杂的 PySide6 应用程序构建为Windows上的可分发EXE文件。您可以选择完全遵循它,也可以跳到与您自己的项目最相关的示例。
最后,我们使用InstallForge创建一个可分发的Windows安装程序。
您始终需要在目标系统上编译应用程序。因此,如果您想创建Mac.app则需要在Mac上执行此操作,对于EXE,您需要使用Windows。
Example Installer for Windows 适用于 Windows 的示例安装程序
如果您不耐烦,可以先下载适用于 Windows 的示例安装程序。
https://downloads.pythonguis.com/DemoAppInstallforge.exe
PyInstaller开箱即用,与Qt for Python PySide6 一起使用,在撰写本文时,当前版本的PyInstaller与Python 3.6+兼容。无论你正在从事什么项目,你都应该能够打包你的应用。
您可以使用 pip 安装 PyInstaller。
pip3 install PyInstaller
如果您在打包应用程序时遇到问题,您的第一步应该始终是更新您的 PyInstaller,并使用 Hooks 打包最新版本
pip3 install --upgrade PyInstaller pyinstaller-hooks-contrib
hooks 模块包含特定于软件包的 PyInstaller 打包指令,这些指令会定期更新。
在虚拟环境中安装(可选)
您还可以选择在虚拟环境(或应用程序虚拟环境)中安装 PySide6 和 PyInstaller,以保持环境清洁。
python3 -m venv packenv
创建后,通过从命令行运行来激活虚拟环境
call packenv\scripts\activate.bat
最后,安装所需的库。
pip3 install PySide6 PyInstaller
开始
最好从一开始就开始打包应用程序,这样就可以确认打包在开发应用程序时仍在工作。如果添加其他依赖项,这一点尤其重要。如果最后只考虑打包,则可能很难准确调试问题所在。
在本例中,我们将从一个简单的骨架应用开始,它不做任何有趣的事情。一旦我们完成了基本的打包过程,我们将扩展应用程序以包含图标和数据文件。我们将在进行过程中确认构建。
首先,为应用程序创建一个新文件夹,然后在名为 app.py 的文件中添加以下主干应用。您还可以下载源代码和相关文件
from PySide6 import QtWidgets
import sys
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Hello World")
l = QtWidgets.QLabel("My simple app.")
l.setMargin(10)
self.setCentralWidget(l)
self.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
app.exec_()
这是一个基本的裸体应用程序,它创建自定义 QMainWindow 并向其添加一个简单的小部件 QLabel 。您可以按如下方式运行此应用。
python app.py
这应该会产生以下窗口(在 Windows 11 上)
构建基本应用
现在我们已经有了简单的应用程序框架,我们可以运行我们的第一个构建测试以确保一切正常。
打开终端(命令提示符)并导航到包含项目的文件夹。现在可以运行以下命令来运行 PyInstaller 内部版本。
pyinstaller app.py
您将看到许多消息输出,提供有关 PyInstaller 正在执行的操作的调试信息。这些对于调试生成中的问题很有用,但可以忽略。我在 Windows 11 上运行命令获得的输出如下所示。
C:\Users\Gebruiker\pyinstaller\pyside6>pyinstaller app.py
235 INFO: PyInstaller: 4.7
235 INFO: Python: 3.7.6
237 INFO: Platform: Windows-10-10.0.22000-SP0
238 INFO: wrote C:\Users\Gebruiker\pyinstaller\pyside6\app.spec
240 INFO: UPX is not available.
243 INFO: Extending PYTHONPATH with paths
['C:\\Users\\Gebruiker\\pyinstaller\\pyside6']
574 INFO: checking Analysis
574 INFO: Building Analysis because Analysis-00.toc is non existent
575 INFO: Initializing module dependency graph...
579 INFO: Caching module graph hooks...
590 INFO: Analyzing base_library.zip ...
4047 INFO: Caching module dependency graph...
4198 INFO: running Analysis Analysis-00.toc
4214 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
required by c:\users\gebruiker\appdata\local\programs\python\python37\python.exe
4433 INFO: Analyzing C:\Users\Gebruiker\pyinstaller\pyside6\app.py
4600 INFO: Processing module hooks...
4601 INFO: Loading module hook 'hook-difflib.py' from 'c:\\users\\gebruiker\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\PyInstaller\\hooks'...
4602 INFO: Loading module hook 'hook-encodings.py' from 'c:\\users\\gebruiker\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\PyInstaller\\hooks'...
4667 INFO: Loading module hook 'hook-heapq.py' from 'c:\\users\\gebruiker\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\PyInstaller\\hooks'...
4668 INFO: Loading module hook 'hook-pickle.py' from 'c:\\users\\gebruiker\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\PyInstaller\\hooks'...
4669 INFO: Loading module hook 'hook-PySide6.py' from 'c:\\users\\gebruiker\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\PyInstaller\\hooks'...
5083 INFO: Loading module hook 'hook-PySide6.QtNetwork.py' from 'c:\\users\\gebruiker\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\PyInstaller\\hooks'...
5558 INFO: Loading module hook 'hook-PySide6.QtWidgets.py' from 'c:\\users\\gebruiker\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\PyInstaller\\hooks'...
5782 INFO: Loading module hook 'hook-xml.py' from 'c:\\users\\gebruiker\\appdata\\local\\programs