【问题标题】:Why is the .exe file created by pyinstaller not working?为什么 pyinstaller 创建的 .exe 文件不起作用?
【发布时间】:2019-08-25 10:08:13
【问题描述】:

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

感谢您的帮助;D

【问题讨论】:

  • 问题可能是由于加载的资源与您的脚本相比,可执行文件的位置不同。请编辑您的问题以包含minimal reproducible example,以便更轻松地为您提供帮助。也许这个question and answers 会对你有所帮助。

标签: python pygame exe pyinstaller


【解决方案1】:

尝试打开命令提示符并导航到您安装它的文件夹。然后通过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,您的可执行文件就在其中!

【讨论】:

  • 感谢您的回复,即使我通过控制台启动exe,也不会出现错误。你能更准确地解释一下你是如何使用 GUI 的吗?我不太明白你的意思。
  • 能否给你链接源代码或可执行文件?
  • 你可以尝试通过pyinstaller转换它吗?稍后我将尝试使用 cx_freeze,我在安装它时遇到了问题,因为缺少 visual c++ 14.0
  • 我会把它留给其他人发布pyinstaller 解决方案。我更喜欢cx_freeze,因为开发人员(您)指定要包含/排除的包以及您的程序需要的任何其他文件/文件夹。另一方面,pyinstaller 获取所有文件本身(支持的软件包的不完整列表:github.com/pyinstaller/pyinstaller/wiki/Supported-Packages),但经常会遇到pyinstaller.readthedocs.io/en/stable/… 中讨论的错误
  • 谢谢你,在终于让 cx_freeze 工作后它工作了!
猜你喜欢
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 2015-12-12
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
相关资源
最近更新 更多