我在一个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