使用 Fbs/PyInstaller 冻结我的应用程序导致在另一台电脑上启动时无法执行 pyi_rth_qt5plugins

Posted

技术标签:

【中文标题】使用 Fbs/PyInstaller 冻结我的应用程序导致在另一台电脑上启动时无法执行 pyi_rth_qt5plugins【英文标题】:Freezing my app with Fbs/PyInstaller result in fail to execute pyi_rth_qt5plugins when starting on an other pc 【发布时间】:2020-06-24 14:38:45 【问题描述】:

我正在尝试使用 Fbs (https://build-system.fman.io/) 冻结我的 python 应用程序 在运行到我修复的一些库错误后,我能够冻结它而没有任何问题。 我可以在我的电脑上完美启动应用程序。但是在另一台计算机上,我会收到错误消息: Failed to execute script pyi_rth_qt5plugins

经过一些研究,问题似乎来自 fbs 使用的 PyInstaller。 冻结时我在终端中没有错误,但在 warn-Colorspace_converter.txt 文件中我有以下错误:

missing module named 'PyQt5.QtCore' - imported by PIL.ImageQt (conditional, optional), l:\script\colour\venvcolour\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_qt5plugins.py (optional)
missing module named 'PyQt5.sip' - imported by l:\script\colour\venvcolour\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_qt5plugins.py (optional)
missing module named sip - imported by l:\script\colour\venvcolour\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_qt5plugins.py (optional)

我正在使用 PySide2,我该如何解决这个问题?

线程到我发现但我不明白的类似问题,因为它们仅用于 pyinstaller 或 PyQt5。我应该安装可能导致 fbs 出现问题的 PyQt5 有两个库吗?

https://github.com/pyinstaller/pyinstaller/issues/2301

Python 3.6.x PyInstaller gives error "No module named 'PyQt5.sip'"

环境:

Windows 10 PySide2 Python 3.6.8

【问题讨论】:

【参考方案1】:

我不是专家或任何东西.. 分享我的经验

您可以使用最新的 Pyinstaller 版本来冻结应用程序。然后将对象移动到 target/<appname> 文件夹。 现在使用fbs installer 来制作安装程序。

Failed to execute script 总是在缺少某些依赖项时出现。

我相信我们也可以使用fbs freeze --debug,它将显示缺少的依赖项。然后,您可以将它们添加到 .spec 文件中的 hidden imports

【讨论】:

感谢您的回答,我使用freeze --debug 修复了所有问题,并且我设法让它在我的电脑上像那样工作(但在其他电脑上仍然不行)。我将尝试使用 PyInstaller 而不是 Fbs 进行冻结。【参考方案2】:

看来重新创建我的虚拟环境并降级到较低的 PySide2 版本 (5.13.1) 解决了这个问题。

我在 PyInstaller 日志中仍然有相同的错误(并且在终端中也找不到一些库),但应用程序现在可以完美启动。

【讨论】:

以上是关于使用 Fbs/PyInstaller 冻结我的应用程序导致在另一台电脑上启动时无法执行 pyi_rth_qt5plugins的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中使用 Hive 数据库时我的应用程序冻结

CLLocationManager 从后台状态返回时冻结我的应用程序?

为啥我的冻结应用程序被检测为可能的病毒?

启动图像和打开动画是不是会导致我的应用冻结?

ImportError:运行我的应用程序时没有名为“队列”的模块被 cx_freeze 冻结

ABPeoplePickerNavigationController 冻结我的应用程序