So for various reasons, PyInstaller deployed PySide2 applications can fail to run on our supported operating systems.
One existing patch which is hopefully a step forward to fix this is https://codereview.qt-project.org/#/c/226543/ which allows using a qt.conf file to specify where the various bits of Qt are located relative to the deployed application folder.
A non-exhaustive list of things failing:
- QtWebEngine example failures due to
- Unable to find QtWebEngineProcess executable
- Unable to find icu data
- Unable to find resources
- Unable to find translations
- Not copying xcb gl integrations plugins on Linux
- PATH issues on Windows (should be addressed by https://codereview.qt-project.org/#/c/225933/2 )
WebEngine issues are different on different platforms:
- On macOS there seems to be no distinction currently between which files need to be copied in a framework vs non-framework build
- On macOS the problem with finding the QtWebEngineProcess stems from hardcoding the search via a bundle identifier, which seems not to be kept by the PyInstaller process when copying libraries. The following change addresses the hardcoding https://codereview.qt-project.org/#/c/226346/ in QtWebEngine itself.
- On Linux not all NSS libraries seem to be copied, resulting in failures on WebEngine startup.
- On Linux the xcb gl integrations plugins are not copied
- iirc on all platforms the resources, translations, process executable were not copied
Outlines of what probably needs to be done:
- possibly change pyinstaller code to write a qt.conf file instead of using using QtCoreApplication::setLibraryPaths in PyInstaller/loader/rthooks/pyi_rth_qt5plugins.py
- make sure that all required files are copied over on the various platform configs (plugins, translations, resources, libexec)
- figure out what needs to be changed for PySide2 given the merge of
https://github.com/pyinstaller/pyinstaller/pull/3233/files which is not yet released at the time of creation of this issue.