|project| 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: 1. Send a normal ZIP file with the application's content. 2. Build a proper `Python package (wheel) `_. 3. Freeze the application into a single binary file or directory. If you choose Option 3, consider using one of these tools: * `fbs`_ * `PyInstaller`_ * `cx_Freeze`_ * `py2exe`_ * `py2app`_ .. _fbs: https://build-system.fman.io/ .. _PyInstaller: https://www.pyinstaller.org/ .. _cx_Freeze: https://anthony-tuininga.github.io/cx_Freeze/ .. _py2exe: http://www.py2exe.org/ .. _py2app: https://py2app.readthedocs.io/en/latest/ Since |project| 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: .. raw:: html
Name License Linux macOS Windows

fbs

GPL

yes

yes

yes

PyInstaller

GPL

yes

yes

yes

cx_Freeze

MIT

yes

yes

yes

py2exe

MIT

no

no

yes

py2app

MIT

no

yes

no

Notice that only *fbs*, *cx_Freeze*, 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: .. toctree:: :name: mastertoc :maxdepth: 2 deployment-fbs.rst deployment-pyinstaller.rst deployment-cxfreeze.rst