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 的错误