Currently, PyInstaller is used to create a stand alone app bundle of easyDiffraction. However, it has a number of drawbacks:
Squish doesn’t work with mac app bundle created by PyInstaller, so testing the GUI is currently not possible on macOS.
PyInstaller fails to create a working app bundle for Linux (Ubuntu)
PyInstaller includes unused Qt modules, such as QtWebEngine (QtWebEngineCore is about 125Mb), etc. A simple attempt to exclude them from the created bundle with the ‘--exclude-module=‘ key failed (although this works for pure python modules, such as numpy).
A promising alternative to PyInstaller is cx_freeze, which can be imported as Python module and thus allows to create stand alone app via python script. It also seems to be more customizable.
One should try to create a simple project based on Python+QML and see if one could overcome the above mentioned drawbacks with cx_freeze.
Additionally, cx_freeze supports Qt6, while pyinstaller only has partial support (Nov 2021)
From https://jira.esss.lu.se/browse/DAS-193
Currently, PyInstaller is used to create a stand alone app bundle of easyDiffraction. However, it has a number of drawbacks:
Squish doesn’t work with mac app bundle created by PyInstaller, so testing the GUI is currently not possible on macOS. PyInstaller fails to create a working app bundle for Linux (Ubuntu) PyInstaller includes unused Qt modules, such as QtWebEngine (QtWebEngineCore is about 125Mb), etc. A simple attempt to exclude them from the created bundle with the ‘--exclude-module=‘ key failed (although this works for pure python modules, such as numpy). A promising alternative to PyInstaller is cx_freeze, which can be imported as Python module and thus allows to create stand alone app via python script. It also seems to be more customizable.
One should try to create a simple project based on Python+QML and see if one could overcome the above mentioned drawbacks with cx_freeze.
Additionally, cx_freeze supports Qt6, while pyinstaller only has partial support (Nov 2021)