Pyinstaller - 使用 multiprocessing.freeze_support 时出现“致命错误!无法执行脚本”

Ram*_*Ram 10 python pyinstaller multiprocessing python-3.x

我正在使用 pyinstaller(v3.2.1) 来构建一个 --onefile windows exe。我在我的 python (v3.5.3) 脚本中使用多处理。我已经为 Windows 实现了下面提到的解决方法。

配方多重处理

从逻辑上讲,除非满足要求/条件并且按预期工作,否则我的 python 脚本不会跨越多个进程。我的问题是,每当涉及多个进程时,一切似乎都很好。但万一,如果没有涉及多进程,下面的“致命:无法执行脚本”对话框会闪烁几秒钟或更长时间,然后消失仍然返回预期结果。

在此处输入图片说明

我是否遗漏了什么导致致命错误对话框出现和消失?我怀疑当未创建新进程时,multiprocessing.freeze()紧随其后的语句if __name__ == __main__ :可能会导致问题!

小智 10

我遇到了同样的问题,并遵循了 Eugene Chabanov 的建议,即使用没有任何特殊字符的 pyinstaller pyinstaller yourapp.py,当 exe 准备好时,我使用 Windows CMD 打开它,但它卡在 CMD 中并出现错误:

ModuleNotFoundError: No module named 'babel.numbers'
Run Code Online (Sandbox Code Playgroud)

这次我再次运行了 pyinstaller pyinstaller -F --hidden-import "babel.numbers" test.py,它运行得很好。

试着看看你得到了什么错误,如果它是“ModuleNotFoundError”,那么只需运行 pyinstaller added --hidden-import "missing_module_name"

我希望它有帮助。

这些人因帮助我而值得称赞:

--hidden-import "missing_module_name" - 先生

无窗口运行 - Eugene Chabanov


Eug*_*nov 5

我遇到了类似的问题,并通过运行不带-windowed前缀的编译命令然后使用命令行启动 exe 文件来解决它。它允许查看错误在哪里。脚本指的是一个不存在的文件。错误在另一台计算机上弹出,而我的一切正常。(因为硬编码文件就位)


use*_*Geo 4

此错误通常与从目录请求某些数据的脚本相关,而该目录未内置到 exe 中。

如果您的脚本包含来自某处的某种数据,请确保源文件夹中的数据文件也在冻结的应用程序中。

要将数据文件添加到冻结的应用程序,请参阅http://pyinstaller.readthedocs.io/en/latest/spec-files.html#adding-files-to-the-bundle