Crossin的编程教室

标题: pygame 打飞机 py2exe打包问题 [打印本页]

作者: hjb1022    时间: 2017-10-15 21:15
标题: pygame 打飞机 py2exe打包问题
做pygame的练习时,用cxfreeze 和 py2exe打包时都遇到了一点问题。。。

cxfreeze遇到的问题:
用cxfreeze打包完成,在在dist文件夹下出了个exe文件,但是打开就一闪而过,直接用命令行运行后提示以下报错:

PS E:\Python\work\pygame\打飞机> .\打飞机.ex
ImportError: No module named __startup__

py2exe遇到的问题:
从论坛里下载了py2exe的配置文件,修改过后放入dist文件夹下:

以下是修改过的部分:
class BuildExe:
    def __init__(self):
        # ------------------------------------------------------#
        ##### 对于一个新的游戏程序,需要修改这里的各个参数 #####
        # ------------------------------------------------------#

        # 起始py文件
        self.script = "打飞机.py"
        # 游戏名
        self.project_name = "打飞机"
        # 游戏site
        self.project_url = "about:none"
        # 游戏版本
        self.project_version = "0.1"
        # 游戏许可
        self.license = "打飞机 License"
        # 游戏作者
        self.author_name = "H"
        # 联系电邮
        self.author_email = "blog@eyehere.net"
        # 游戏版权
        self.copyright = "Copyright (c) 3000 H."
        # 游戏描述
        self.project_description = "打飞机 Description"
        # 游戏图标(None的话使用pygame的默认图标)
        self.icon_file = None
        # 额外需要拷贝的文件、文件夹(图片,音频等)
        self.extra_datas = []
        # 额外需要的python库名
        self.extra_modules = []
        # 需要排除的python库
        self.exclude_modules = []
        # 额外需要排除的dll
        self.exclude_dll = ['']
        # 需要加入的py文件
        self.extra_scripts = []
        # 打包Zip文件名(None的话,打包到exe文件中)
        self.zipfile_name = None
        # 生成文件夹
        self.dist_dir = 'dist'

之后发现无法运行py2game
试过直接运行py2game的那个配置文件,提示一下信息

PS C:\Users\H\dist> python '.\py2exe config.py'
Sorry, you must install py2exe, pygame. No module named core

但是我py2exe和pygame应该都装好了呀。。。

PS C:\Users\H\dist> pip freeze
cx-Freeze==5.0.2
Django==1.11.6
image==1.5.16
olefile==0.44
Pillow==4.3.0
py2exe==0.9.2.2
pyExcelerator==0.6.4.1
pygame==1.9.3
pytz==2017.2
xlrd==1.1.0
xlutils==2.0.0
xlwt==1.3.0

而且奇怪的是,进python, pygame可以import, 但是import py2exe就有以下报错

>>> import py2exe
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\py2exe\__init__.py", line 9, in <module>
    patch_distutils()
  File "C:\Python27\lib\site-packages\py2exe\patch_distutils.py", line 64, in patch_distutils
    import distutils.dist
ImportError: No module named dist

有没有大神能帮忙看一下。。。

2017-10-15_210643.jpg (18.89 KB, 下载次数: 261)

2017-10-15_210643.jpg


作者: crossin先生    时间: 2017-10-16 00:00
网上搜了下 好像是 cxfreeze 5 对py2是有问题的,装成 cxfreeze 4.3 的试试

py2exe那个不清楚,但感觉也像是版本问题
作者: hjb1022    时间: 2017-10-25 21:34
crossin先生 发表于 2017-10-16 00:00
网上搜了下 好像是 cxfreeze 5 对py2是有问题的,装成 cxfreeze 4.3 的试试

py2exe那个不清楚,但感觉也像 ...

谢谢!
我换成了python 3.6,用cxfreeze打包成功了。。。
但是有个问题,为啥打包后的EXE,一定要所有的图片素材和字体在统一文件夹下才能运行这个EXE呢?能不能打包一个EXE就可以直接运行,而不用再把其他的素材放在同一目录下才能运行呢
作者: crossin先生    时间: 2017-10-25 23:22
好像是不行,py2exe 可以




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5