为什么pyinstaller创建的.exe文件不起作用?

时间:2019-04-03 19:09:28

标签: python pygame exe pyinstaller

我使用pygame构建了一个简单的“飞扬的小鸟”游戏,然后尝试使用pyinstaller将.py脚本转换为带有pyinstaller flappybird.py的.exe。但是,当我尝试执行.exe时,命令提示符和游戏窗口会打开约2秒钟,而不会显示任何错误,也不会显示游戏中的任何内容,当通过flappybird.py在python中作为python脚本执行时,效果很好命令提示符。我正在使用最新版本的pyinstaller,我不知道为什么它不起作用,因为它与我之前编写的其他游戏一样具有吸引力。

感谢您的帮助; D

1 个答案:

答案 0 :(得分:0)

尝试打开命令提示符并导航到安装它的文件夹。然后通过flappybird.exe(或您命名的任何名称)运行它,并检查错误是否未在终端中显示。听起来好像遇到了使它崩溃的错误,但是在您读取该错误之前,它会立即关闭。因此,从终端运行它可以使它具有一个不会消失的窗口,并且如果有一个窗口,它可以在其中显示一条错误消息(不过,我不确定这可能只会告诉您启动过程中的错误)。我通常更喜欢使用具有一段文本更新的GUI,并且可以使用它本质上将已编译程序的状态“打印”到此框中,也许您可​​以使用类似的技术?祝你好运!

更新

使用您的代码,我能够毫无问题地对其进行编译和运行(使用cx-freeze)。我的setup.py文件是:

import sys
from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need fine tuning.
additional_modules = []

build_exe_options = {"includes": additional_modules,
                     "packages": ["pygame", "random", "sys", "pyglet"],
                     "excludes": ['tkinter'],
                     "include_files": ['icon.ico', 'res']}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(name="Flappy Bird",
      version="1.0",
      description="Flap around",
      options={"build_exe": build_exe_options},
      executables=[Executable(script="flappybird.py", base=base)])

如果您可以运行可执行文件

  • pip install cx_freeze

  • 将上面的代码复制/粘贴到文件setup.py(位于脚本旁边)

  • 在命令提示符下打开文件夹并运行python setup.py build

如果命令失败,则可能需要再次运行该命令(与尝试从尚未创建的文件夹中读取有关)。

  • 现在您有了一个新文件夹build,并且可执行文件在其中!