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

时间:2017-06-20 00:34:35

标签: python python-3.x multiprocessing pyinstaller

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

Recipe Multiprocessing

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

enter image description here

是否有任何我遗漏的导致致命错误对话框出现并消失的内容?我怀疑multiprocessing.freeze()之后的if __name__ == __main__ :语句可能会在未创建新进程时导致问题!

7 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我遇到了同样的问题,并遵循Eugene Chabanov的建议,即使用pyinstaller yourapp.py而不带任何特殊字符的pyinstaller,当exe准备就绪时,我使用Windows CMD将其打开,但由于错误而卡在了CMD中:< / p>

ModuleNotFoundError: No module named 'babel.numbers'

然后我这次pyinstaller -F --hidden-import "babel.numbers" test.py再次运行pyinstaller,它的运行效果很好。

尝试查看遇到的错误,如果它是“ ModuleNotFoundError”,则只需运行pyinstaller并添加--hidden-import "missing_module_name"

希望对您有帮助。

这些人应该为我提供帮助:

--hidden-import "missing_module_name" - M. R.

run without windowed - Eugene Chabanov

答案 2 :(得分:1)

在与这个问题进行了激烈的斗争之后,我发现我的模块安装在我的IDE中,而不是实际的python运行环境中。当我在IDE中运行时,这导致一切正常运行,但是当我运行.exe时,它无法引用模块。为了解决这个问题,我在cmd行中打开了.py文件所在的目录,然后简单地将依赖项重新安装在那里,一切正常。我希望这对您有用,因为我连续数天不停地在网上寻找解决方案。

答案 3 :(得分:0)

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

如果您的脚本有某种地方的数据,请确保源文件夹中的数据文件也在冻结的应用程序中。

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

答案 4 :(得分:0)

尝试以管理员身份运行。我遇到了同样的问题,因为我想在&#34; Program Files&#34;创建一些文件。

答案 5 :(得分:0)

经过长时间的研究,我发现我的代码有两个问题:

  1. pynput 仅适用于 1.6.8 (pip install pynput==1.6.8) See answer from Sandeep
  2. 我的文件中有一个图标 iconbitmap(r'icon.ico')。处理时未找到此图标文件。我将其替换为以“C:....”开头的完整路径,并且成功了。

通过在终端中键入 YourProgramName.exe(确保您在正确的目录中),我能够进行故障排除(有时显示错误有时不显示)。然后它会显示什么不起作用。

答案 6 :(得分:0)

我在尝试将 .py 文件转换为 .exe 时遇到了同样的错误。

就我而言,问题是我在脚本中导入了一个未被其余代码使用的库。 奇怪的是,VS 并没有抱怨这个库完全没用的事实。

作为一个简单的第一步,我建议:检查您的脚本并删除所有冗余。