Python 冻结的可执行文件在某些​​计算机上不起作用

Posted

技术标签:

【中文标题】Python 冻结的可执行文件在某些​​计算机上不起作用【英文标题】:Python Frozen Executable Files are not Working on Some Computers 【发布时间】:2017-01-27 01:27:13 【问题描述】:

我冻结的 Python 文件在我的计算机上正常运行。我用cx_freeze 冻结了它们,但在某些计算机上它们不起作用。例如在 Windows 7 中,它总是需要 DLL 文件,它说它们丢失了。通常是关于api-ms-win DLL 文件。

在 Windows 10 中,它显示此错误:

但在我的电脑上,它可以正常工作。这怎么可能,我该如何解决?

【问题讨论】:

你的电脑有 DLLs @StephenRauch 我可以学习一下,需要哪些 dll? 【参考方案1】:

存在许多潜在问题,但 Python 3.5+ 和 Windows 10 中最常见的问题似乎缺少 api-ms-win dll。

为了帮助我的 Python 冻结程序找到所需的 DLL:

这是来自pyinstaller 问题跟踪器的一组注释:

将所需dll的目录添加到系统路径。我的应用程序使用依赖于 api-ms-win dll 的 PyQt5。

对于 PyQt5 添加这个目录:

%WHERE EVER YOU INSTALLED PYTHON%\Lib\site-packages\PyQt5\Qt\bin

对于 api-ms-win dll,您需要 Visual Studio 2015 或 Windows SDK(在此处下载): 如果你有 Visual Studio 的目录:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x64 如果你有 Windows SDK 的目录:C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x64

添加所需路径后,pyinstaller可以找到文件。

(SOURCE)

但是缺少哪些 DLL?

为了帮助查找任何丢失的 DLL,您可以使用 Dependency Walker 查找您的程序需要的所有 DLL。

我应该改用 Pyinstaller 吗?

如果您使用的冻结实用程序不配合,通常值得尝试其他一些冻结实用程序。

【讨论】:

其实我被cx_freeze冻结了,你推荐pyinstaller吗? 您的标签提到了cx-freeze,所以我知道这是您使用的。我使用pyinstaller,并且偶尔会为它做贡献,所以我关注他们的问题跟踪器。所以我知道我引用的笔记是可用的。这是我提到pyinstaller 的唯一原因。所以是的,我建议尝试pyinstaller,但据我所知,他们都遇到了这个问题。 我被 pyinstaller 冻结了,它现在可以工作了。谢谢。

以上是关于Python 冻结的可执行文件在某些​​计算机上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

批处理文件在某些​​计算机上未完成 - 使用 Google Developer Console

在 Windows 7 中使用 cx_freeze 创建的可执行文件在其他计算机上运行时崩溃并出现有关 PyQt5 的错误

如何将需要导入模块的python脚本转换为Windows中的可执行文件

Java 简单 TCP 客户端/服务器测试冻结

VS快递跟专业有冲突吗?

PySide2和pyinstaller gui应用程序将无法在某些Windows计算机上运行