鱼C论坛

 找回密码
 立即注册
查看: 9433|回复: 17

pygame打包成exe的问题

[复制链接]
发表于 2016-5-8 21:54:52 | 显示全部楼层 |阅读模式
100鱼币
我用cxfreeze成功打包了,就是小甲鱼老师的打飞机游戏,但是打开main。exe的程序后一闪而过,求助这是为什么
是因为有if __name__=='__main__':这行代码吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-5-8 21:59:07 | 显示全部楼层
我又试着把一个普通python程序打包成exe  也成功了,但是打开后还是一闪而过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-9 08:39:36 | 显示全部楼层
bs4好强额,还没用过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-9 12:54:00 | 显示全部楼层
精华帖,好好学习,慢慢积累!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-9 13:04:10 | 显示全部楼层
只能指定一个要打包的模块,也就是启动模块
所有.py文件都不能有中文字符,否则会出现编码异常。
发布后,可执行文件执行路径不能有中文(最好也不要有空格)。
启动执行的文件中不要有下面这种判断,否则可执行文件执行会没有任何效果。
if __name__ == "__main__": 
main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-9 16:00:50 | 显示全部楼层
试一下用PyInstaller  www.pyinstaller.org
可用一句命令打包:pyinstaller -F -w -i manage.ico app.py

-F:打包为单文件
-w:Windows程序,不显示命令行窗口
-i:是程序图标,app.py是你要打包的py文件

另外需要pywin32。

安装方法:
先跑pip install pywin32再跑pip install pyinstaller
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-5-9 19:24:06 | 显示全部楼层
hldh214 发表于 2016-5-9 13:04
只能指定一个要打包的模块,也就是启动模块
所有.py文件都不能有中文字符,否则会出现编码异常。
发布后 ...

我把主题写成一个main()函数然后直接执行main()可以吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-9 21:28:19 | 显示全部楼层
kuuga 发表于 2016-5-9 19:24
我把主题写成一个main()函数然后直接执行main()可以吗

你试试呗, 我这边测试是没问题的, 不要用if __name__ == "__main__": 就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-5-9 21:41:44 | 显示全部楼层
hldh214 发表于 2016-5-9 21:28
你试试呗, 我这边测试是没问题的, 不要用if __name__ == "__main__": 就行了

我试了,打开后还是闪退
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-12 15:50:28 | 显示全部楼层
6楼正解,前几天就是用pyinstaller成功打包成exe
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-12 15:53:43 | 显示全部楼层
接10楼,是在cmd命令行里操作,用pip比较爽,一次不行多试几次,我前两次用pip都说我版本太低,后来又试几次又成功了。不过我成功打包成的单个exe文件运行时出现系统dll文件问题,我也解决不了,所以索性不打包成单文件,然后用winrar把文件夹里的文件打包成单个exe自解压文件就行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-17 21:47:40 | 显示全部楼层
阁下不妨试试以下方式打包。需要安装py2exe,然后把下面pack.py的代码放到你要打包的py文件所在的文件夹下面,运行pack.py,目录下就会多出1个dist文件夹,里面就有打包好的exe程序以及依赖到的dll文件。打包程序依赖到的静态文件(比如打飞机游戏程序用到的图片,音频等)则需要手动复制到dist文件夹里面。打包完成以及静态文件到位之后就可以运行.exe程序啦。
#pack.py
from distutils.core import setup
import py2exe
import sys

sys.argv.append('py2exe')
 
py2exe_options = {
  "dll_excludes": ["MSVCP90.dll",],
  "compressed": 1,
  "optimize": 2,
  "ascii": 0,
  "bundle_files": 1
}

setup(
  name = 'Demo',
  version = '1.0',
  windows = ['main.py',],
  zipfile = None,
  options = {'py2exe': py2exe_options}
)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-17 11:08:49 | 显示全部楼层
我的情况和你的一模一样,请问你是怎么解决的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-17 11:15:37 | 显示全部楼层
hongchh 发表于 2016-5-17 21:47
阁下不妨试试以下方式打包。需要安装py2exe,然后把下面pack.py的代码放到你要打包的py文件所在的文件夹下 ...

还是 不行
生成main.exe后双击打开闪退,出现main.log文件,打开后如下
‘Traceback (most recent call last):
  File "main.py", line 22, in <module>
pygame.error
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-30 19:10:41 | 显示全部楼层
你的问题解决了吗,我也遇到同样的问题了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-8 22:34:24 | 显示全部楼层
加油,相信你很快就成功,你的帖子很有价值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-15 23:28:14 | 显示全部楼层
6楼的方法可以啊,闪退加个-w参数就解决了,有资源的话把资源拷过去就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-18 10:28:06 | 显示全部楼层
可以打包用pyinstaller.exe -F main.py -p bullet.py -p ......   -p用来连接剩下的py文件。我打包好了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 14:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表