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

时间:2016-12-29 17:17:23

标签: python python-3.x pygame python-3.5 cx-freeze

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

我正在使用的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错误所以我添加了前三行。之后,一切都应该是正确的。我已经看过类似的帖子,但似乎没有任何帮助。
cx_freeze app opens then closes quickly<这个用户只有一个简单的印刷错误
python program works but .exe does not open cx_Freeze<没有anwser,也没有任何有用的评论。
Executable generated with cx_freeze opens for an instant before closing<该用户实际上收到错误。我没有。

澄清/ TLDR: 我正在使用cx_Freeze将pygame游戏转换为.exe格式。我只有一个名为character.png的图像。构建执行完美没有错误(只要我包含前三行,我有)唯一的问题是:运行exe时,控制台打开但不是我的游戏窗口,控制台立即关闭。

1 个答案:

答案 0 :(得分:1)

我复制了您的安装脚本并使用我自己的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,以便控制台窗口不会显示在Pygame窗口后面,除非您需要它。此外,Tkinter对于Pygame应用程序来说完全没有必要,因此您可以将"excludes": ["Tkinter"](或Python 3中的小写tkinter添加到选项dict并删除脚本的前三行。