I'm having the same trouble. Unfortunately for me, all of the suggested remedies failed. If I build the game with 1.7 pygame.mixer.music works. Under 1.8 I get the message:
AttributeError: 'module' object has no attribute 'music' I tried using py2exe 0.6.6 and 0.6.5. I have XP SP2. Fails in Parallels and VMWare: Fusion. Don't have a 'real' pc anymore. Has anyone investigated this further? Here is my build file and the relevant part of my audio.py # A setup script showing how to extend py2exe. # # In this case, the py2exe command is subclassed to create an installation # script for InnoSetup, which can be compiled with the InnoSetup compiler # to a single file windows installer. # # By default, the installer will be created as dist\Output\setup.exe. from distutils.core import setup import py2exe import sys import shutil ################################################################ # arguments for the setup() call brigiton = dict( script = "main.py", dest_base = r"prog\brigiton", icon_resources = [(1,"DHSGiT.ico")]) zipfile = r"lib\shardlib" options = {"py2exe": {"compressed": 0, "optimize": 2}, } #dataList = []; #glob.glob("data\\*"); #scan data folder for files and append in form "data\file ################################################################ import os class InnoScript: def __init__(self, name, lib_dir, dist_dir, windows_exe_files = [], lib_files = [], data_files = [], version = "1.0.2.0"): #another one down below. self.lib_dir = lib_dir self.dist_dir = dist_dir if not self.dist_dir[-1] in "\\/": self.dist_dir += "\\" self.name = name self.version = version self.windows_exe_files = [self.chop(p) for p in windows_exe_files] self.lib_files = [self.chop(p) for p in lib_files] def chop(self, pathname): assert pathname.startswith(self.dist_dir) return pathname[len(self.dist_dir):] def create(self, pathname="dist\\brigiton.iss"): self.pathname = pathname ofi = self.file = open(pathname, "w") print >> ofi, "; WARNING: This script has been created by py2exe. Changes to this script" print >> ofi, "; will be overwritten the next time py2exe is run!" print >> ofi, r"[Setup]" print >> ofi, r"AppName=%s" % self.name print >> ofi, r"AppVerName=%s %s" % (self.name, self.version) print >> ofi, r"DefaultDirName={pf}\%s" % self.name print >> ofi, r"DefaultGroupName=%s" % self.name print >> ofi print >> ofi, r"[Dirs]" print >> ofi, r'Name: "{app}\prog\data"' print >> ofi, r'Name: "{app}\prog\data\actors"' #print >> ofi, r'Name: "{app}\prog\data\anims"' print >> ofi, r'Name: "{app}\prog\data\animations"' print >> ofi, r'Name: "{app}\prog\data\backdrops"' print >> ofi, r'Name: "{app}\prog\data\buttons"' print >> ofi, r'Name: "{app}\prog\data\fonts"' print >> ofi, r'Name: "{app}\prog\data\icons"' print >> ofi, r'Name: "{app}\prog\data\music"' print >> ofi, r'Name: "{app}\prog\data\sounds"' print >> ofi, r'Name: "{app}\prog\data\trouble"' print >> ofi print >> ofi, r"[Files]" #print >> ofi, r'Source: "prog\data\*"; DestDir: "{app}\prog\data"; Flags: ignoreversion' print >> ofi, r'Source: "prog\data\actors\*"; DestDir: "{app}\prog\data\actors"; Flags: ignoreversion' #print >> ofi, r'Source: "prog\data\anims\*"; DestDir: "{app}\prog\data\anims"; Flags: ignoreversion' print >> ofi, r'Source: "prog\data\animations\*"; DestDir: "{app}\prog\data\animations"; Flags: ignoreversion' print >> ofi, r'Source: "prog\data\backdrops\*"; DestDir: "{app}\prog\data\backdrops"; Flags: ignoreversion' print >> ofi, r'Source: "prog\data\buttons\*"; DestDir: "{app}\prog\data\buttons"; Flags: ignoreversion' print >> ofi, r'Source: "prog\data\fonts\*"; DestDir: "{app}\prog\data\fonts"; Flags: ignoreversion' print >> ofi, r'Source: "prog\data\icons\*"; DestDir: "{app}\prog\data\icons"; Flags: ignoreversion' print >> ofi, r'Source: "prog\data\music\*"; DestDir: "{app}\prog\data\music"; Flags: ignoreversion' print >> ofi, r'Source: "prog\data\sounds\*"; DestDir: "{app}\prog\data\sounds"; Flags: ignoreversion' print >> ofi, r'Source: "prog\data\trouble\*"; DestDir: "{app}\prog\data\trouble"; Flags: ignoreversion' print >> ofi, r'Source: "prog\msvcr71.dll"; DestDir: "{app}\prog"; Flags: ignoreversion' #print >> ofi, r'Source: "prog\libpng12-0.dll"; DestDir: "{app}\prog"; Flags: ignoreversion' #print >> ofi, r'Source: "prog\jpeg.dll"; DestDir: "{app}\prog"; Flags: ignoreversion' #print >> ofi, r'Source: "prog\libvorbisfile-3.dll"; DestDir: "{app}\prog"; Flags: ignoreversion' #print >> ofi, r'Source: "prog\libogg-0.dll"; DestDir: "{app}\prog"; Flags: ignoreversion' #print >> ofi, r'Source: "prog\libvorbis-0.dll"; DestDir: "{app}\prog"; Flags: ignoreversion' print >> ofi, r'Source: "prog\libfreetype-6.dll"; DestDir: "{app}\lib"; Flags: ignoreversion' #print >> ofi, r'Source: "prog\zlib1.dll"; DestDir: "{app}\lib"; Flags: ignoreversion' for path in self.windows_exe_files + self.lib_files: print >> ofi, r'Source: "%s"; DestDir: "{app}\%s"; Flags: ignoreversion' % (path, os.path.dirname(path)) print >> ofi print >> ofi, r"[Icons]" for path in self.windows_exe_files: print >> ofi, r'Name: "{group}\%s"; Filename: "{app}\%s"' % \ (self.name, path) print >> ofi, 'Name: "{group}\Uninstall %s"; Filename: "{uninstallexe}"' % self.name def compile(self): try: import ctypes except ImportError: try: import win32api except ImportError: import os os.startfile(self.pathname) else: print "Ok, using win32api." win32api.ShellExecute(0, "compile", self.pathname, None, None, 0) else: print "Cool, you have ctypes installed." res = ctypes.windll.shell32.ShellExecuteA(0, "compile", self.pathname, None, None, 0) if res < 32: raise RuntimeError, "ShellExecute failed, error %d" % res ################################################################ from py2exe.build_exe import py2exe class build_installer(py2exe): # This class first builds the exe file(s), then creates a Windows installer. # You need InnoSetup for it. def run(self): # First, let py2exe do it's work. py2exe.run(self) lib_dir = self.lib_dir dist_dir = self.dist_dir # create the Installer, using the files py2exe has created. script = InnoScript("DangerousHSGirls", lib_dir, dist_dir, self.windows_exe_files, self.lib_files) print "*** creating the inno setup script***" script.create() print "*** compiling the inno setup script***" script.compile() # Note: By default the final setup.exe will be in an Output subdirectory. ################################################################ setup( options = options, version = "1.0.2.0", #last digit for Windows increments between Mac increments description = "py2exe script", name = "Dangerous HS Girls in Trouble!", # The lib directory contains everything except the executables and the python dll. zipfile = zipfile, windows = [brigiton], # use out build_installer class as extended py2exe build command cmdclass = {"py2exe": build_installer}, #data_files = [("prog\data", [])], ) ------------------------------------------------------------- audio.py import pygame,os import faceEngn import pygame.mixer_music musicNames = []; #soundNames = ["sangria","sonar","drop","badswap","chaching","wall"]; soundNames = []; soundLib = {}; mixer = music = None; #Hogari_Hisaaki-Yasuko_Yamano-Beagle.ogg nextMusic = 0; musicVolume = 1.0; #0.4; musicFlag = True; lastSound = ""; lastSndTime = 0; loopSound = None; def InitSounds(): global mixer, music, musicNames; try: import pygame.mixer as pymix mixer = pymix; music = pymix.music; #<<<<<<<<< FAILS HERE!!!!! except (ImportError, pygame.error): return; tp = os.path.join('data','music'); tl = os.listdir(tp); for fname in tl: if (fname[-4] == '.'): musicNames.append(fname); music.set_volume(musicVolume); pass --- René Dudfield <[EMAIL PROTECTED]> wrote: > hi, > > did you try and import pygame.mixer_music to see the traceback? > > As Brian has said it works for him with those versions, so he can't > try it himself. > > cheers, > > > > On Sun, Apr 6, 2008 at 4:49 AM, Phil Hassey <[EMAIL PROTECTED]> wrote: > > Hey, > > > > I'm working on a game and just set up a fresh dev environment. I found that > > I was having the same issues with py2exe and pygame. Since (as I'll post in > > a minute) I was having issues with pygame-1.8's sound, I downgraded to 1.7 > > to fix that. However, the py2exe issues persisted. I checked on one of my > > other systems and saw that I was using py2exe 0.6.5 on those systems. By > > downgrading to py2exe 0.6.5, I was able to resolve the mixer issue. > > > > So my conclusion is - somehow py2exe 0.6.6 doesn't like pygame (1.7 or 1.8). > > > > Hope that helps! > > -Phil > > > > > > René Dudfield <[EMAIL PROTECTED]> wrote: > > ah, yeah. smpeg wasn't in 1.7.1 on windows... but now it is. > > > > So, yeah, that's most likely the problem. > > > > > > On Thu, Apr 3, 2008 at 9:33 AM, Lenard Lindstrom wrote: > > > Pygame 1.8 does have more dependencies than 1.7. It's been awhile since I > > > used 1.7 but are not smpeg new to Windows. And are not libvorbis and > > libogg > > > new to 1.8? Could py2exe be overlooking them? > > > > > > Lenard > > > > > > > > > > > > > > > René Dudfield wrote: > > > > > > > Can you tell py2exe to include the pygame.music_mixer or > > > > mixer_music.pyd module specifically? > > > > > > > > > > > > On Wed, Apr 2, 2008 at 9:13 PM, Bo Jangeborg wrote: > > > > > > > > > > > > > More info on mixer.music > > > > > It works in the pygame 1.7 so looks like we have a bug in 1.8. > > > > > > > > > > Bo Jangeborg skrev: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi > > > > > > > > > > > > I am trying to run pygame.mixer.music after having created a py2exe. > > > > > > > > > > > > The import seem to work ok, but it never loads the music method > > > > > > so the following doesn't work > > > > > > > > > > > > import pygame.mixer > > > > > > print pygame.mixer.music > > > > > > > > > > > > Traceback (most recent call last): > > > > > > File "test.pyw", line 728, in > > > > > > File "test.pyw", line 128, in main > > > > > > File "vers_01\Program\Test\testgame.pyw", line 66, in run > > > > > > File "vers_01\Program\Test\testgame.pyw", line 147, in __init__ > > > > > > File "vers_01\Program\Test\testgame.pyw", line 158, in > > initiate_music > > > > > > File "vers_01\Program\TestMusic\__init__.py", line 1, in > > > > > > File "vers_01\Program\TestMusic\musix.pyw", line 11, in > > > > > > AttributeError: 'module' object has no attribute 'music' > > > > > > > > > > > > > > > > > > In the developer version it works and the print returns : > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Files\Python2_5\Lib\site-packages\pygame\mixer_music.pyd'> > > > > > > > > > > > > > > > > What could I be doing wrong ? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ________________________________ > > You rock. That's why Blockbuster's offering you one month of Blockbuster > > Total Access, No Cost. >