我在一個mac上工作,我正在編寫一個python和pygame遊戲,需要一些聲音文件出現在源代碼所在的相同目錄中。當我通過python解釋器運行源代碼時,它是有效的。當我嘗試運行由cxFreeze編譯的可執行文件時,它不起作用。我已經在網上搜索解決方案,但什麼也沒找到。我如何獲得編譯的Python(與cxFreeze)獲取當前工作目錄作爲可執行文件所在的目錄?
當解釋python時,cwd就是源代碼所在的目錄。當使用cxFreeze編譯並通過終端運行時,cwd會變爲我的主目錄。由於我想讓這個遊戲變得可移植,並且我需要聲音文件與可執行文件位於同一個文件夾中,所以這會導致混亂。
import os
# Load the sound files.
CWDPATH = os.getcwd()
BEEP1 = pygame.mixer.Sound(os.path.join(CWDPATH, 'beep1.wav'))
BEEP2 = pygame.mixer.Sound(os.path.join(CWDPATH, 'beep2.wav'))
BEEP3 = pygame.mixer.Sound(os.path.join(CWDPATH, 'beep3.wav'))
BEEP4 = pygame.mixer.Sound(os.path.join(CWDPATH, 'beep4.wav'))
這部分代碼是什麼導致了問題。它在解釋時運行平穩,但在用cxFreeze編譯時不起作用,因爲os.getcwd()計算爲主目錄。我已經嘗試在cxFreeze腳本的'packages'選項中放置'os'。它不起作用,我在這個時間裏工作沒有解決方案。我怎樣才能使這個工作?
當您從終端運行它,你首先導航到合適的文件夾,然後運行該文件,或者你輸入一個更完整路徑('cd myprograms','myprogram.exe'或'myprograms/myprogram.exe')?如果您只是想將聲音文件指向同一個文件夾,則無需指定路徑;只需使用'pygame.mixer.Sound('beep1.wav')'。 – TigerhawkT3