I've uploaded a minimal app that has the problem. http://p4.hostingprod.com/@mousechief.com/musicFailSetup.exe
Here's the two relevant files: ------------------------------------- audio py import pygame,os 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; import pygame.mixer_music music = pymix.music; #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); PlayMusic(); while music.get_busy(): pass pass def PlayMusic(name, loopCount=1): if (not music or not musicFlag): return; #check music loop preference if loop: loop = -1; loop = loopCount; if music.get_busy(): #we really should fade out nicely and #wait for the end music event, for now, CUT music.stop(); fullname = os.path.join('data', 'music', name); if (os.access(fullname,os.F_OK)): music.load(fullname); else: fullname = os.path.join('data', 'sounds', name); music.load(fullname); music.play(loop); return; ------------------------------------- setup.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\music"' print >> ofi print >> ofi, r"[Files]" print >> ofi, r'Source: "prog\data\music\*"; DestDir: "{app}\prog\data\music"; 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", [])], ) --- Keith Nemitz <[EMAIL PROTECTED]> wrote: > > I've started with fresh XP Sp2 installs on both VMWare and Parallels. > Installed only what was > necessary: > > Python, pygame, numeric, py2exe. > > As per earlier suggestion, I uninstalled py2exe 0.6.6 and installed 0.6.5. > > I don't think it's an install issue. > > > > > --- René Dudfield <[EMAIL PROTECTED]> wrote: > > > ah, > > > > Have you tried uninstalling (maybe manually deleting) pygame, py2exe > > etc then installing again? > > > > Maybe there's some problem with that... > > > > > > > > On Wed, May 21, 2008 at 9:31 AM, Keith Nemitz <[EMAIL PROTECTED]> wrote: > > > Yep, > > > > > > It's in Program Files/(AppFolder)/lib. > > > > > > > > > > > > > > > --- René Dudfield <[EMAIL PROTECTED]> wrote: > > > > > >> hi, > > >> > > >> Do you have the smpeg dll copied in there? > > >> > > >> cu, > > >> > > >> > > >> On Wed, May 21, 2008 at 7:58 AM, Keith Nemitz <[EMAIL PROTECTED]> wrote: > > >> > I get the following: > > >> > > > >> > AttributeError: 'module' object has no attribute 'mixer_music' > > >> > > > >> > > > >> > > > >> > > > >> > --- Brian Fisher <[EMAIL PROTECTED]> wrote: > > >> > > > >> >> I guess that means it imports correctly, but somehow fails to get > > >> >> bound? > > >> >> > > >> >> I don't suppose you can access the functionality you need through > > >> >> mixer_music, can you? > > >> >> > > >> >> In other words, what happens if you change the first failing > > >> >> pygame.mixer.music.whatever line to pygame.mixer_music.whatever? > > >> >> (after the > > >> >> import, of course) > > >> >> > > >> >> On Tue, May 20, 2008 at 11:17 AM, Keith Nemitz <[EMAIL PROTECTED]> > > >> >> wrote: > > >> >> > > >> >> > I put your import line right above the failing line, but got > > >> >> > exactly the > > >> >> > same results. I even > > >> >> > removed the try/exception block. > > >> >> > > > >> >> > > > >> >> > > >> > > > >> > > > >> > > > > > > > > > >