[英]Pygame cannot open sound file after being converted to .exe
所以我有一個我用 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() 調用,甚至嘗試只輸入整個路徑。
有什么建議嗎?
我將它與 pyinstaller 一起使用,效果很好:
ROOT_DIR = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__))
您需要在項目根文件夾中的 any.py 文件中定義此變量。 它現在將成為您的項目目錄的路徑,無論項目是否已編譯。
然后你會像這樣使用它:
image = pygame.image.load(os.path.join(ROOT_DIR, 'image.png'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.