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

Why is the .exe file created by pyinstaller not working?

我使用 pygame 构建了一个简单的 "flappy bird" 游戏,然后尝试使用 pyinstaller 将 .py 脚本转换为使用 pyinstaller flappybird.py 的 .exe。但是当我尝试执行 .exe 时,命令提示符和游戏 window 打开大约 2 秒,没有显示任何错误,也没有显示游戏中的任何内容,当作为 python 脚本执行时工作正常通过命令提示符中的 flappybird.py。我正在使用最新版本的 pyinstaller,但我不知道为什么它不起作用,因为它与我之前编写的其他游戏一起工作时就像一个魅力。

感谢您的帮助;D

尝试打开命令提示符并导航到您安装它的文件夹。然后 运行 通过 flappybird.exe (或任何你给它起的名字)并检查错误没有出现在你的终端中。听起来它遇到了一个使它崩溃的错误,但在您可以读取错误之前立即关闭。因此,从终端 运行 允许它有一个不会消失的 window 并且它可以在那里打印一条错误消息(如果有的话)(这可能只会告诉你启动期间的错误,我'我不确定)。我通常更喜欢使用具有更新文本部分的 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

  • copy/paste 将上面的代码放入一个文件 setup.py(放在你的脚本旁边)

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

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

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