所以我有一个用pygame编写的游戏。效果很好。我喜欢它。我想与朋友分享,所以我尝试将其编译为exe。这是事情潜水的地方。
这是我的代码示例:
import os, sys, csv
import pygame
import random
import subprocess
pygame.mixer.init(22050, -16, 2, 256)
pygame.init()
clock = pygame.time.Clock()
width = 1080
height = 1080
keys = pygame.key.get_pressed()
size = (width, height)
myfont = pygame.font.Font('8Bit.ttf', 30)
screen = pygame.display.set_mode([width,height],pygame.FULLSCREEN)
pygame.display.set_caption('My Game')
print(os.getcwd())
image = pygame.image.load(os.path.join('image.png'))
engine = pygame.mixer.Sound(os.path.join('engine.ogg'))
bang = pygame.mixer.Sound('bang.ogg')
我所有的游戏文件都与游戏位于同一根目录中。再次,当我从终端运行python代码时,它运行良好。
我使用pyinstaller进行了转换,并将其安装到目录中,所有游戏文件均导入到该目录中。
文件位于print()调用所打印的目录中,而我得到的错误是:
pygame.error: Unable to open file 'engine.ogg'
我尝试过包括并删除os.path.join()调用,甚至试图只键入整个路径。
有什么建议吗?
答案 0 :(得分:1)
我将它与pyinstaller一起使用,效果很好:
ROOT_DIR = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__))
您需要在项目的根文件夹中的任何.py文件中定义此变量。无论项目是否编译,现在都将成为项目目录的路径。
然后您将像这样使用它:
image = pygame.image.load(os.path.join(ROOT_DIR, 'image.png'))