前段时间自学python基础语法和使用方法,跟着书本编了一个“外星人入侵”的基本小游戏,体验编程的快乐。然后,前天突然脑子抽风,想着用pyinstaller打包成exe文件,这样就可以炫一下。
没有想到一进坑就难以自拔。。。
一、 工具:python3.6.4 64位 win8
二、使用历程
1、下载:这一步我是直接使用命令行pip install pyinstaller来进行的,比较简单方便。
2、 单个文件: 之前接触过一般使用pyinstaller -F < 文件名>
3、多个文件+图片:搞了很久。。。
刚开始运行时每次都有错误,能够生成exe,但是不能运行,还出现一闪而过的情况。
最后通过网上搜索以及尝试,发现可以先生成spec文件,对文件进行编辑,然后在使用pyinstaller生成exe文件
1) 生成spec文件,在命令行中输入pyi-makespec options name.py [other scripts ...]在cmd运行目录下会生成spec文件,我是放到需要打包的py文件目录下运行的。analysis中第一个列表类型,为需要打包的多个py文件,hiddenimports中放入引用的外部库。datas数组中放入需要的其他外部资源,我这里用到两幅图片,ship和alien,然后统一加入进去。注意:目录之前我用的相对路径,后来改成了绝对路径,我没有验证相对路径是否可以,按道理讲应该是可以的。(与py文件中路径一致才可)
a = Analysis(['alien_invasion.py', 'button.py', 'scoreboard.py', 'game_functions.py', 'ship.py', 'game_stats.py', 'settings.py', 'alien.py', 'bullet.py'],
pathex=['D:\\software_my_programming\\python\\pycharm\\alien_invasion'],
binaries=[],
datas=[],
hiddenimports=['pygame', 'os', 'sys', 'time'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
a.datas += (('alien.bmp','D:\\software_my_programming\\python\\pycharm\\alien_invasion\\images\\alien.bmp','DATA'),
('ship.bmp','D:\\software_my_programming\\python\\pycharm\\alien_invasion\\images\\ship.bmp','DATA'))
2)在命令行中输入pyinstaller options name.spec生成exe文件,这里会生成几个文件夹,dist和build,exe文件在dist文件夹下,直接运行就可以了。(如果遇到不能运行的问题,在命令行中运行exe文件,会有一些可以参考的错误信息,注意将外部资源的 位置放置正确)
但是目前仍有问题无法解决,把exe文件移至桌面不能运行(窗口0.1s闪过。。。)
有待抽空继续研究~