cx_Freeze Exe 应用程序一打开就关闭

cx_Freeze Exe Application closes as soon as opens

我正在尝试使用 cx_Freeze 将我的 pygame python 项目转换为 .exe 文件。安装文件正确执行且没有错误,但问题是当我 运行 我的 .exe 文件时,控制台 window 将打开和关闭,我的游戏 window 不会出现。

我正在使用的setup.py:

import os
os.environ['TCL_LIBRARY'] = "C:\Users\MY_USERNAME\AppData\Local\Programs\Python\Python35-32\tcl\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\Users\MY_USERNAME\AppData\Local\Programs\Python\Python35-32\tcl\tk8.6"

import cx_Freeze

executables = [cx_Freeze.Executable("main.py")]

cx_Freeze.setup(

    name="Shooty",
    options={"build_exe": {"packages": ["pygame"], "include_files": ["character.png"]}},

    description="Shooty, An epic platformer!",
    executables=executables

)

我遇到了 TCL 错误,所以我添加了前三行。然后一切都应该是正确的。我已经看过类似的帖子,但 none 似乎有所帮助。
cx_freeze app opens then closes quickly <该用户只是有一个简单的打字错误
python program works but .exe does not open cx_Freeze < 没有答案,也没有有用的评论。
Executable generated with cx_freeze opens for an instant before closing < 该用户实际上得到了一个错误。我没有。

致clarify/TLDR: 我正在使用 cx_Freeze 将 pygame 游戏转换为 .exe 格式。我只有一张名为 character.png 的图片。构建完美无误地执行(只要我包括前三行,我有)唯一的问题是:在 运行 运行 exe 时,控制台打开但不是我的游戏 window 和控制台立即关闭。

我复制了您的设置脚本并用我自己的 Pygame 项目之一对其进行了测试。一开始它对我也不起作用,所以我调查了这个问题并在 Bitbucket 上发现了一个错误:https://bitbucket.org/anthony_tuininga/cx_freeze/issues/211/if-name-main-doesnt-work-in

显然有一个错误,特别是对于 cx-Freeze 5.0 版,行 if __name__ == "__main__": 将不起作用。但是,当我按照错误报告中的建议将其替换为 if __name__.endswith('__main__'): 时,我的 Pygame 应用程序可以与 cx-Freeze 一起使用,因此这为我解决了问题。

此外,我建议将关键字参数 base="Win32Gui" 添加到 cx_Freeze.Executable,这样控制台 window 就不会出现在 Pygame window,除非你想要它。此外,Tkinter 对于 Pygame 应用程序是完全不必要的,因此您可以将 "excludes": ["Tkinter"](或 Python 3 中的小写 tkinter)添加到选项字典并删除第一个三行脚本。