1

当我编译以下脚本时:

# play.py

import os, re
import pygame.mixer

pygame.mixer.init(11025)
pygame.mixer.music.load('song.ogg')
pygame.mixer.music.play(-1)

os.system("PAUSE")

使用以下setup.py

from cx_Freeze import setup, Executable
exe = Executable(
script="play.py",
)

setup(
    executables = [exe]
    )

通过:

python setup.py build

执行play.exe给我以下错误:

Traceback (most recent call last):
  File "C:\Python33\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 2
7, in <module>
    exec(code, m.__dict__)
  File "play.py", line 7, in <module>
pygame.error: Couldn't open 'song.ogg'

该脚本在编译之前运行良好,是的,我确实将song.ogg放在了exe的目录中。顺便说一下song.ogg工作正常,我已经检查过了。有任何想法吗?

PS如果我把它改成song.wav,它工作得很好,但是WAV文件太大了,我无法使用。MP3 也不能正常工作。

4

3 回答 3

4

通过Process Explorer,我发现我需要将Python33\Lib\site-packages\pygame中的libogg.dlllibvorbis.dlllibvorbisfile.dll复制到我的冻结程序目录中。

于 2013-04-03T14:24:29.463 回答
0

计算机无法打开 song.ogg 文件,因为 cx_freeze 未在其编译中包含该歌曲。您应该尝试将歌曲文件包含到setup.py脚本中。使用setup.py如下脚本。

from cx_Freeze import setup, Executable

exe=Executable(
     script="play.py",
     base="Win32Gui",
     )
includefiles=[song.ogg]
includes=[]
excludes=[]
packages=[]
setup(

     version = "0.0",
     description = "Description",
     author = "Name",
     name = "Play",
     options = {'build_exe': {'excludes':excludes,'packages':packages,'include_files':includefiles}},
     executables = [exe]
     )
于 2013-04-03T16:26:19.243 回答
-2

扩展您的答案,我为 mac 用户找到了此解决方案(假设您使用Homebrew安装 pygame):

    brew install libogg
    brew install libvorbis
    brew install sdl_mixer --with-libvorbis

如果您收到一条消息“警告:sol_mixer-1.2.12 已安装”。运行第三条命令后,将其替换为以下内容:

    brew reinstall sdl_mixer --with-libvorbis

供参考:无法在 Mac 上使用 pygame 打开声音文件

于 2016-07-09T06:48:55.977 回答