用pygame写个小游戏打算打包,但是如果仅是 pyinstaller -F xxx.py 则在别人的电脑上跑不起来(自己的图像 资源移动时也跑不起来
解决方案:
首先我的资源在同级目录res里,如图
拷贝以下代码段到程序里
def resource_path(relative_path):
if getattr(sys, 'frozen', False): # 是否Bundle Resource
base_path = sys._MEIPASS
else:
#base_path = os.path.abspath(".")
base_path = os.path.dirname(os.path.abspath(__file__))
return os.path.join(base_path, relative_path)
当需要加载res文件夹下的资源时
```python
pygame.mixer.Sound(resource_path(os.path.join('res','10s.mp3')))
表示加载同级res目录下的 10s.mp3.
接下来执行pyinstaller -F xxx.py,会生成一个build和dist文件夹,删掉它们。(没试过不删行不行
有一个xxx.spec,生成 ,xxx是你py文件名 我这里是ame.spec
打开它 修改以下部分:
再次cmd运行pyinstaller xxx.spec
所有的资源就被打包进最后生成目录下的dist文件夹里的exe了,这样就可以和朋友分享写的游戏啦ww
ps:不想有控制台的话记得把spec这里改成false
以及如果想精致点有icon的话,必须pyinstaller -F xxx.py -i yyy.icon
在pyinstaller xxx.spec -i icon 会报错。



