Qt for Python Deployment¶
Deploying or freezing an application is an important part of a Python project, this means to bundle all required resources so that the application finds everything it needs to be able to run on a client’s machine. However, because most large projects aren’t based on a single Python file, distributing these applications can be a challenge.
- Here are a few distribution options that you can use:
Send a normal ZIP file with the application’s content.
Build a proper Python package (wheel).
Freeze the application into a single binary file or directory.
Provide native installer (msi, dmg)
- If you choose Option 3, consider using one of these tools:
Since Qt for Python is a cross-platform framework, we focus on solutions for the three major platforms that Qt supports: Windows, Linux, and macOS.
The following table summarizes the platform support for those packaging tools:
Name | License | Qt 6 | Qt 5 | Linux | macOS | Windows |
---|---|---|---|---|---|---|
fbs |
GPL |
yes |
yes |
yes |
yes |
|
PyInstaller |
GPL |
partial |
yes |
yes |
yes |
yes |
cx_Freeze |
MIT |
yes |
yes |
yes |
yes |
yes |
py2exe |
MIT |
partial |
partial |
no |
no |
yes |
py2app |
MIT |
yes |
yes |
no |
yes |
no |
briefcase |
BSD3 |
partial |
yes |
yes |
yes |
yes |
Nuitka |
MIT |
yes |
yes |
yes |
yes |
yes |
Notice that only fbs, cx_Freeze, briefcase, and PyInstaller meet our cross-platform requirement.
Since these are command-line tools, you’ll need special hooks or scripts to handle resources such as images, icons, and meta-information, before adding them to your package. Additionally, these tools don’t offer a mechanism to update your application packages.
To create update packages, use the PyUpdater, which is a tool built around PyInstaller.
The fbs tool offers a nice UI for the user to install the application step-by-step.
Note
Deployment is supported only from Qt for Python 5.12.2 and later.
Here’s a set of tutorials on how to use these tools:
© 2022 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.