Я работаю над маком, и я пишу игру на питоне и 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() оценивает домашний каталог. Я попытался поставить параметр «os» в «пакеты» в скрипте cxFreeze. Это не работает, и я работал в это время без решения. Как я могу заставить это работать?
При запуске из терминала, вы сначала перейдите в соответствующую папку и запустите файл, или же вы вводите более полный путь ('cd myprograms',' myprogram.exe' или 'myprograms/myprogram.exe')? Если вы просто хотите указать звуковые файлы в одной и той же папке, вам не нужно указывать путь; просто используйте 'pygame.mixer.Sound ('beep1.wav')'. – TigerhawkT3