Cx_freeze的问题

时间:2017-04-15 18:03:02

标签: python pygame cx-freeze

如果我实际上是在向你寻求帮助,那是因为我花了很多时间来解决我的问题:

我想将我的python脚本编译成.exe: (我使用的是Python 32位3.1.4和pygame)

我有4个文件: Class .pyc,_Class_game.pyc,_ressources.pyc et main.py 以及包含所有图像和歌曲的文件夹@ressources

这是我的scritp setup.py:

import cx_Freeze
executables = [cx_Freeze.Executable("main.py"), base = "Win32GUI"]
cx_Freeze.setup(
    name="Strike The square",
    version = "2.0",
    description = "Jeu Strike The Square, V2.1",
    options={"build_exe": {"packages":["pygame"],
                           "include_files":   ["_Class_.pyc","_Class_game.pyc","_ressources.pyc"]}},
    executables = executables

)

使用python(已编译)和我的游戏

创建一个文件夹“exe.xin32-3.1”

接下来,我使用inno setup来构建安装程序并添加文件夹@ressources

在我的电脑上,它工作得非常好,但是当我的一个朋友想玩(他没有python和pygame)时,游戏会产生这个错误: [错误] [1]

然后......我认为这个错误来自windows的资源,但我不知道如何修复它... 选项(在setup.py中):

include_msvcr = True

不起作用......

感谢您的回答并原谅我的英语......

Hawk_Eyes

PS:这是我的游戏进口

try:
    import pygame,time, ctypes
    from random import randint
    from pygame.locals import *
    from math import sqrt 
    from _ressources import Shared
except ImportError as e:
    print("Erreur du chargement du module: {0}".format(e))

1 个答案:

答案 0 :(得分:0)

不确定这是否有帮助,但这是我的安装文件的副本,我用它来编译Pygame,Pubnub和各种各样的东西。请注意,我不包含我想要包含的文件。安装程序自动查找所需的文件。

import sys
from cx_Freeze import setup, Executable

exe = Executable(
    script = r"launcher.py",
    base = 'Win32GUI',
    icon = None,
    targetName = "launcher.exe"
    )

setup(
    version = "0.1",
    description = "launcher",
    author = "Joshua Nixon",
    name = "launcher",
    executables = [exe]
    )

$ cd path/to/files
$ python file.py build

修改

我最近发现你可以使用cx_freeze创建.MSI文件,非常适合分发。如果程序使用图像然后(因为你不能用MSI(我所知道的)捆绑图像你创建了一个小函数,可以从imgur或某个地方下载它们))

用于MSI的setup.py

import sys
from cx_Freeze import setup, Executable

company_name = "JoshuaNixon"
product_name = "Test"

bdist_msi_options = {
    'add_to_path': False,
    'initial_target_dir': r'[ProgramFilesFolder]\%s' % (company_name),
    }

if sys.platform == 'win32':
    base = 'Win32GUI'
else:
    base = None

exe = Executable(script='launcher.py',
                 base=base,
                 icon="mushroom.ico",
                )

setup(name=product_name,
      version='1.0.0',
      description='blah',
      executables=[exe],
      options={'bdist_msi': bdist_msi_options})

$ cd path/to/files
$ python file.py bdist_msi