簡體   English   中英

Pygame轉成.exe后無法打開聲音文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM