hey, thanks... I'm not near a windows machine at the moment... so I can't test. Strangely the py2exe stuff works for me.
However... what I meant before to try would be this... in your setup. excludes = [] includes = ["pygame.mixer.music", "pygame.mixer_music", "pygame"] opts = { "py2exe": { "includes":includes, "excludes":excludes } } setup(... options=opts ) On Wed, May 21, 2008 at 10:44 AM, Keith Nemitz <[EMAIL PROTECTED]> wrote: > > 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. >> > >> >> > >> > >> >> > >> > >> >> >> > >> > >> > >> > >> > >> >> > > >> > > >> > >> >> > >