首页 > 解决方案 > 使用 pyinstaller 生成的 .exe 在其他 PC 上崩溃 - 如何创建真正没有依赖关系的 .exe?

问题描述

我已经.exe为一个小 PowerPoint 工具生成了一个文件,我使用python 3.6PyQt5框架和pyinstaller. 该程序在我自己的笔记本电脑上运行没有任何错误,并且按预期运行。

不幸的是,我无法.exe在另一台计算机上运行。我现在已经尝试过另外两台计算机,并且在每台计算机上都出现了不同的错误。

电脑 1

Entry Point not found
The procedure entry point ucrtbase.terminate could not be
located in the dynamic link library api-ms-win-crt-runtime-l1-1-0.dll.

电脑 2

This application failed to start because it could not load the Qt platform plugin 'Windows'.

让我烦恼的是,我在开发计算机上开发期间遇到了最后一个错误(来自 PC2),但为我自己的 PC 解决了这个问题。我试图做的是创建一个可以在任何 PC 上运行的 .exe 文件。这是一个简单的 PowerPoint 助手,它应该是一个从图像文件夹创建新幻灯片的快速工具。这就是为什么它非常重要,它可以无缝使用。理想情况下,只需打开.exe即可使用,无需担心每台计算机上的个别缺失部分,将在哪里使用它。

大问题:我能做些什么来保证我.exe包含运行所需的所有依赖项?


我尝试过的事情(也就是我自己尝试解决它..好几天):

在这里阅读低谷:https ://github.com/pyqt/python-qt5/issues/2

改变了我.spec这里提到的:https ://github.com/carlosperate/pyinstaller-test/blob/master/package/pyqt5_test.spec

通读所有这些:https ://stackoverflow.com/search?page=2&tab=Relevance&q=entry%20point%20not%20found

这:https ://stackoverflow.com/search?q=qt+platform+windows

而这个:pyinstaller exe没有任何依赖?

但是没有任何帮助....大多数帖子都解决了编译可执行文件时的问题,但这对我来说很好。

标签: pythonpython-3.xpyqt5exepyinstaller

解决方案


如果您可以选择使用 Python 3.5、PyInstaller 3.3.1 和 PyQt 5.9.2,请使用fbs而不是 PyInstaller 来冻结您的应用程序。它基于 PyInstaller,但可以解决您遇到的边缘情况。这里有设置您的应用程序以与 fbs 一起使用的说明


推荐阅读