想要将pygame项目转换为Windows可执行文件

时间:2019-06-07 15:41:18

标签: python pygame

我用pygame从名为“ Python崩溃课程”的书中创建了python游戏。它有9个.py文件(其中1个用于运行游戏,另8个用于模块,例如:设置,game_functions等),以及一个包含2个图像文件的文件夹。我想与没有python和pygame的朋友分享这个项目,所以我想将整个项目转换为.exe(Windows可执行文件)

我尝试了cx_Freeze,py2exe和pyinstaller。 Pyinstaller是最成功的安装程序,它创建了.exe文件,但是当我运行该文件时,它会黑屏并关闭。我认为原因是它无法访问我正在使用的模块(8个.py文件)和/或图像文件。

这是主要的.py代码,它的导入内容和内容。

import pygame
from pygame.sprite import Group
from settings import Settings
from ship import Ship
import game_functions as gf
from game_stats import GameStats
from scoreboard import Scoreboard
from button import Button


def run_game():
        pygame.init()
...

如果您需要任何其他信息,请随时询问!

1 个答案:

答案 0 :(得分:1)

首先,让我建议您在有代码显示时使用Markdown;它非常简单,而且阅读起来也很容易。 例如,在代码前添加```python ,并在末尾添加`。代码将被格式化并突出显示语法。例如,您的代码不会显示在一行上,而是变成:

import pygame
from pygame.sprite import Group
from settings import Settings
from ship import Ship
import game_functions as gf
from game_stats import GameStats
from scoreboard import Scoreboard
from button import Button

def run_game(): pygame.init() ...

现在,解决您的问题。根据{{​​3}}:

  

不同的基础为Windows上的不同类型的应用程序(GUI,控制台应用程序或服务)服务。

使用cx_Freeze,您需要在setup.py文件中将应用程序指定为GUI(图形用户界面),例如:

import sys
from cx_Freeze import setup, Executable

# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "guifoo",
        version = "0.1",
        description = "My GUI application!",
        executables = [Executable("guifoo_main.py", base=base)])

我还没有检查所有其他“从python到独立应用程序的转换器”,但是我想可能需要更改一些类似内容才能使该应用程序正确执行,而不是作为控制台应用程序。发生此类问题时,建议您花些时间仔细阅读其文档。

希望有帮助!