Run 2to3's print fixer over some places that had been missed.
diff --git a/Mac/BuildScript/build-installer.py b/Mac/BuildScript/build-installer.py
index 034828b..c7ebce8 100755
--- a/Mac/BuildScript/build-installer.py
+++ b/Mac/BuildScript/build-installer.py
@@ -336,16 +336,16 @@
         options, args = getopt.getopt(args, '?hb',
                 [ 'build-dir=', 'third-party=', 'sdk-path=' , 'src-dir='])
     except getopt.error as msg:
-        print msg
+        print(msg)
         sys.exit(1)
 
     if args:
-        print "Additional arguments"
+        print("Additional arguments")
         sys.exit(1)
 
     for k, v in options:
         if k in ('-h', '-?'):
-            print USAGE
+            print(USAGE)
             sys.exit(0)
 
         elif k in ('-d', '--build-dir'):
@@ -368,12 +368,12 @@
     SDKPATH=os.path.abspath(SDKPATH)
     DEPSRC=os.path.abspath(DEPSRC)
 
-    print "Settings:"
-    print " * Source directory:", SRCDIR
-    print " * Build directory: ", WORKDIR
-    print " * SDK location:    ", SDKPATH
-    print " * third-party source:", DEPSRC
-    print ""
+    print("Settings:")
+    print(" * Source directory:", SRCDIR)
+    print(" * Build directory: ", WORKDIR)
+    print(" * SDK location:    ", SDKPATH)
+    print(" * third-party source:", DEPSRC)
+    print("")
 
 
 
@@ -440,7 +440,7 @@
         pass
     else:
         if KNOWNSIZES.get(url) == size:
-            print "Using existing file for", url
+            print("Using existing file for", url)
             return
     fpIn = urllib2.urlopen(url)
     fpOut = open(fname, 'wb')
@@ -479,14 +479,14 @@
 
 
     if os.path.exists(sourceArchive):
-        print "Using local copy of %s"%(name,)
+        print("Using local copy of %s"%(name,))
 
     else:
-        print "Downloading %s"%(name,)
+        print("Downloading %s"%(name,))
         downloadURL(url, sourceArchive)
-        print "Archive for %s stored as %s"%(name, sourceArchive)
+        print("Archive for %s stored as %s"%(name, sourceArchive))
 
-    print "Extracting archive for %s"%(name,)
+    print("Extracting archive for %s"%(name,))
     buildDir=os.path.join(WORKDIR, '_bld')
     if not os.path.exists(buildDir):
         os.mkdir(buildDir)
@@ -549,14 +549,14 @@
         configure_args.insert(0, configure)
         configure_args = [ shellQuote(a) for a in configure_args ]
 
-        print "Running configure for %s"%(name,)
+        print("Running configure for %s"%(name,))
         runCommand(' '.join(configure_args) + ' 2>&1')
 
-    print "Running install for %s"%(name,)
+    print("Running install for %s"%(name,))
     runCommand('{ ' + install + ' ;} 2>&1')
 
-    print "Done %s"%(name,)
-    print ""
+    print("Done %s"%(name,))
+    print("")
 
     os.chdir(curdir)
 
@@ -564,9 +564,9 @@
     """
     Build our dependencies into $WORKDIR/libraries/usr/local
     """
-    print ""
-    print "Building required libraries"
-    print ""
+    print("")
+    print("Building required libraries")
+    print("")
     universal = os.path.join(WORKDIR, 'libraries')
     os.mkdir(universal)
     os.makedirs(os.path.join(universal, 'usr', 'local', 'lib'))
@@ -580,7 +580,7 @@
 def buildPythonDocs():
     # This stores the documentation as Resources/English.lproj/Docuentation
     # inside the framwork. pydoc and IDLE will pick it up there.
-    print "Install python documentation"
+    print("Install python documentation")
     rootDir = os.path.join(WORKDIR, '_root')
     version = getVersion()
     docdir = os.path.join(rootDir, 'pydocs')
@@ -588,13 +588,13 @@
     name = 'html-%s.tar.bz2'%(getFullVersion(),)
     sourceArchive = os.path.join(DEPSRC, name)
     if os.path.exists(sourceArchive):
-        print "Using local copy of %s"%(name,)
+        print("Using local copy of %s"%(name,))
 
     else:
-        print "Downloading %s"%(name,)
+        print("Downloading %s"%(name,))
         downloadURL('http://www.python.org/ftp/python/doc/%s/%s'%(
             getFullVersion(), name), sourceArchive)
-        print "Archive for %s stored as %s"%(name, sourceArchive)
+        print("Archive for %s stored as %s"%(name, sourceArchive))
 
     extractArchive(os.path.dirname(docdir), sourceArchive)
     os.rename(
@@ -604,7 +604,7 @@
 
 
 def buildPython():
-    print "Building a universal python"
+    print("Building a universal python")
 
     buildDir = os.path.join(WORKDIR, '_bld', 'python')
     rootDir = os.path.join(WORKDIR, '_root')
@@ -627,24 +627,24 @@
     # several paths.
     version = getVersion()
 
-    print "Running configure..."
+    print("Running configure...")
     runCommand("%s -C --enable-framework --enable-universalsdk=%s LDFLAGS='-g -L%s/libraries/usr/local/lib' OPT='-g -O3 -I%s/libraries/usr/local/include' 2>&1"%(
         shellQuote(os.path.join(SRCDIR, 'configure')),
         shellQuote(SDKPATH), shellQuote(WORKDIR)[1:-1],
         shellQuote(WORKDIR)[1:-1]))
 
-    print "Running make"
+    print("Running make")
     runCommand("make")
 
-    print "Running make frameworkinstall"
+    print("Running make frameworkinstall")
     runCommand("make frameworkinstall DESTDIR=%s"%(
         shellQuote(rootDir)))
 
-    print "Running make frameworkinstallextras"
+    print("Running make frameworkinstallextras")
     runCommand("make frameworkinstallextras DESTDIR=%s"%(
         shellQuote(rootDir)))
 
-    print "Copying required shared libraries"
+    print("Copying required shared libraries")
     if os.path.exists(os.path.join(WORKDIR, 'libraries', 'Library')):
         runCommand("mv %s/* %s"%(
             shellQuote(os.path.join(
@@ -655,7 +655,7 @@
                 'Python.framework', 'Versions', getVersion(),
                 'lib'))))
 
-    print "Fix file modes"
+    print("Fix file modes")
     frmDir = os.path.join(rootDir, 'Library', 'Frameworks', 'Python.framework')
     gid = grp.getgrnam('admin').gr_gid
 
@@ -744,7 +744,7 @@
         readme = textwrap.dedent(recipe['readme'])
         isRequired = recipe.get('required', True)
 
-        print "- building package %s"%(pkgname,)
+        print("- building package %s"%(pkgname,))
 
         # Substitute some variables
         textvars = dict(
@@ -1047,9 +1047,9 @@
     shutil.copy('../../LICENSE', os.path.join(WORKDIR, 'installer', 'License.txt'))
 
     fp = open(os.path.join(WORKDIR, 'installer', 'Build.txt'), 'w')
-    print >> fp, "# BUILD INFO"
-    print >> fp, "# Date:", time.ctime()
-    print >> fp, "# By:", pwd.getpwuid(os.getuid()).pw_gecos
+    print("# BUILD INFO", file=fp)
+    print("# Date:", time.ctime(), file=fp)
+    print("# By:", pwd.getpwuid(os.getuid()).pw_gecos, file=fp)
     fp.close()
 
     # Custom icon for the DMG, shown when the DMG is mounted.
diff --git a/Mac/Demo/PICTbrowse/PICTbrowse.py b/Mac/Demo/PICTbrowse/PICTbrowse.py
index 0adfc83..83f431e 100644
--- a/Mac/Demo/PICTbrowse/PICTbrowse.py
+++ b/Mac/Demo/PICTbrowse/PICTbrowse.py
@@ -69,9 +69,9 @@
         self.resid = resid
         picture = Qd.GetPicture(self.resid)
         # Get rect for picture
-        print repr(picture.data[:16])
+        print(repr(picture.data[:16]))
         sz, t, l, b, r = struct.unpack('hhhhh', picture.data[:10])
-        print 'pict:', t, l, b, r
+        print('pict:', t, l, b, r)
         width = r-l
         height = b-t
         if width < 64: width = 64
@@ -79,7 +79,7 @@
         if height < 64: height = 64
         elif height > 320: height = 320
         bounds = (LEFT, TOP, LEFT+width, TOP+height)
-        print 'bounds:', bounds
+        print('bounds:', bounds)
 
         self.wid = Win.NewWindow(bounds, resname, 1, 0, -1, 1, 0)
         self.wid.SetWindowPic(picture)
diff --git a/Mac/Demo/PICTbrowse/oldPICTbrowse.py b/Mac/Demo/PICTbrowse/oldPICTbrowse.py
index 8600bb2..2c6f08b 100644
--- a/Mac/Demo/PICTbrowse/oldPICTbrowse.py
+++ b/Mac/Demo/PICTbrowse/oldPICTbrowse.py
@@ -68,9 +68,9 @@
         self.resid = resid
         picture = Qd.GetPicture(self.resid)
         # Get rect for picture
-        print repr(picture.data[:16])
+        print(repr(picture.data[:16]))
         sz, t, l, b, r = struct.unpack('hhhhh', picture.data[:10])
-        print 'pict:', t, l, b, r
+        print('pict:', t, l, b, r)
         width = r-l
         height = b-t
         if width < 64: width = 64
@@ -78,7 +78,7 @@
         if height < 64: height = 64
         elif height > 320: height = 320
         bounds = (LEFT, TOP, LEFT+width, TOP+height)
-        print 'bounds:', bounds
+        print('bounds:', bounds)
 
         self.wid = Win.NewWindow(bounds, resname, 1, 0, -1, 1, 0)
         self.wid.SetWindowPic(picture)
@@ -115,7 +115,7 @@
         (what, message, when, where, modifiers) = event
         Qd.SetPort(self.wid)
         where = Qd.GlobalToLocal(where)
-        print 'LISTHIT', where
+        print('LISTHIT', where)
         if self.list.LClick(where, modifiers):
             self.do_show()
 
diff --git a/Mac/Demo/applescript/makedisk.py b/Mac/Demo/applescript/makedisk.py
index 013331c..981a5ef 100644
--- a/Mac/Demo/applescript/makedisk.py
+++ b/Mac/Demo/applescript/makedisk.py
@@ -8,8 +8,8 @@
 try:
     objref = talker.create('my disk image', saving_as=filespec, leave_image_mounted=1)
 except Disk_Copy.Error as arg:
-    print "ERROR: my disk image:", arg
+    print("ERROR: my disk image:", arg)
 else:
-    print 'objref=', objref
-print 'Type return to exit-'
+    print('objref=', objref)
+print('Type return to exit-')
 sys.stdin.readline()
diff --git a/Mac/Demo/imgbrowse/imgbrowse.py b/Mac/Demo/imgbrowse/imgbrowse.py
index 57cddd3..fddfc99 100644
--- a/Mac/Demo/imgbrowse/imgbrowse.py
+++ b/Mac/Demo/imgbrowse/imgbrowse.py
@@ -25,7 +25,7 @@
 
 
 def main():
-    print 'hello world'
+    print('hello world')
     imgbrowse()
 
 class imgbrowse(FrameWork.Application):
@@ -84,10 +84,10 @@
     def do_update(self, *args):
         pass
         currect = self.fitrect()
-        print 'PICT:', self.pictrect
-        print 'WIND:', currect
-        print 'ARGS:', (self.pixmap, self.wid.GetWindowPort().GetPortBitMapForCopyBits(), self.pictrect,
-                        currect, QuickDraw.srcCopy, None)
+        print('PICT:', self.pictrect)
+        print('WIND:', currect)
+        print('ARGS:', (self.pixmap, self.wid.GetWindowPort().GetPortBitMapForCopyBits(), self.pictrect,
+                        currect, QuickDraw.srcCopy, None))
         self.info()
         Qd.CopyBits(self.pixmap, self.wid.GetWindowPort().GetPortBitMapForCopyBits(), self.pictrect,
                         currect, QuickDraw.srcCopy, None)
diff --git a/Mac/Demo/imgbrowse/mac_image.py b/Mac/Demo/imgbrowse/mac_image.py
index 9c9eeb7..75baff4 100644
--- a/Mac/Demo/imgbrowse/mac_image.py
+++ b/Mac/Demo/imgbrowse/mac_image.py
@@ -38,19 +38,19 @@
             cmpCount, cmpSize, \
             planeBytes, pmTable, pmReserved \
                     = struct.unpack("lhhhhhhhlllhhhhlll", data)
-    print 'Base:       0x%x'%baseAddr
-    print 'rowBytes:   %d (0x%x)'%(rowBytes&0x3fff, rowBytes)
-    print 'rect:       %d, %d, %d, %d'%(t, l, b, r)
-    print 'pmVersion:  0x%x'%pmVersion
-    print 'packing:    %d %d'%(packType, packSize)
-    print 'resolution: %f x %f'%(float(hRes)/0x10000, float(vRes)/0x10000)
-    print 'pixeltype:  %d, size %d'%(pixelType, pixelSize)
-    print 'components: %d, size %d'%(cmpCount, cmpSize)
-    print 'planeBytes: %d (0x%x)'%(planeBytes, planeBytes)
-    print 'pmTable:    0x%x'%pmTable
-    print 'pmReserved: 0x%x'%pmReserved
+    print('Base:       0x%x'%baseAddr)
+    print('rowBytes:   %d (0x%x)'%(rowBytes&0x3fff, rowBytes))
+    print('rect:       %d, %d, %d, %d'%(t, l, b, r))
+    print('pmVersion:  0x%x'%pmVersion)
+    print('packing:    %d %d'%(packType, packSize))
+    print('resolution: %f x %f'%(float(hRes)/0x10000, float(vRes)/0x10000))
+    print('pixeltype:  %d, size %d'%(pixelType, pixelSize))
+    print('components: %d, size %d'%(cmpCount, cmpSize))
+    print('planeBytes: %d (0x%x)'%(planeBytes, planeBytes))
+    print('pmTable:    0x%x'%pmTable)
+    print('pmReserved: 0x%x'%pmReserved)
     for i in range(0, len(data), 16):
         for j in range(16):
             if i + j < len(data):
-                print '%02.2x'%ord(data[i+j]),
-        print
+                print('%02.2x'%ord(data[i+j]), end=' ')
+        print()
diff --git a/Mac/Demo/quicktime/VerySimplePlayer.py b/Mac/Demo/quicktime/VerySimplePlayer.py
index 2930eac..7c0fef0 100644
--- a/Mac/Demo/quicktime/VerySimplePlayer.py
+++ b/Mac/Demo/quicktime/VerySimplePlayer.py
@@ -18,7 +18,7 @@
 # XXXX maxbounds = (40, 40, 1000, 1000)
 
 def main():
-    print 'hello world' # XXXX
+    print('hello world') # XXXX
     # skip the toolbox initializations, already done
     # XXXX Should use gestalt here to check for quicktime version
     Qt.EnterMovies()
@@ -75,7 +75,7 @@
             whichWindow = Win.WhichWindow(message)
             if not whichWindow:
                 # Probably the console window. Print something, hope it helps.
-                print 'update'
+                print('update')
             else:
                 Qd.SetPort(whichWindow)
                 whichWindow.BeginUpdate()
diff --git a/Mac/Demo/resources/copyres.py b/Mac/Demo/resources/copyres.py
index da55b06..6c8a3c0 100644
--- a/Mac/Demo/resources/copyres.py
+++ b/Mac/Demo/resources/copyres.py
@@ -34,7 +34,7 @@
             id, type, name = res.GetResInfo()
             size = res.SizeResource()
             attrs = res.GetResAttrs()
-            print id, type, name, size, hex(attrs)
+            print(id, type, name, size, hex(attrs))
             res.DetachResource()
             UseResFile(output)
             try:
@@ -42,15 +42,15 @@
             except (RuntimeError, Res.Error) as msg:
                 res2 = None
             if res2:
-                print "Duplicate type+id, not copied"
+                print("Duplicate type+id, not copied")
                 print (res2.size, res2.data)
-                print res2.GetResInfo()
+                print(res2.GetResInfo())
                 if res2.HomeResFile() == output:
                     'OK'
                 elif res2.HomeResFile() == input:
                     'BAD!'
                 else:
-                    print 'Home:', res2.HomeResFile()
+                    print('Home:', res2.HomeResFile())
             else:
                 res.AddResource(type, id, name)
                 #res.SetResAttrs(attrs)
diff --git a/Mac/Demo/resources/listres.py b/Mac/Demo/resources/listres.py
index 6ce5779..8f391eb 100644
--- a/Mac/Demo/resources/listres.py
+++ b/Mac/Demo/resources/listres.py
@@ -7,7 +7,7 @@
     ntypes = Res.Count1Types()
     for itype in range(1, 1+ntypes):
         type = Res.Get1IndType(itype)
-        print "Type:", repr(type)
+        print("Type:", repr(type))
         nresources = Res.Count1Resources(type)
         for i in range(1, 1 + nresources):
             Res.SetResLoad(0)
@@ -19,7 +19,7 @@
     ntypes = Res.CountTypes()
     for itype in range(1, 1+ntypes):
         type = Res.GetIndType(itype)
-        print "Type:", repr(type)
+        print("Type:", repr(type))
         nresources = Res.CountResources(type)
         for i in range(1, 1 + nresources):
             Res.SetResLoad(0)
@@ -28,7 +28,7 @@
             info(res)
 
 def info(res):
-    print res.GetResInfo(), res.SizeResource(), decodeattrs(res.GetResAttrs())
+    print(res.GetResInfo(), res.SizeResource(), decodeattrs(res.GetResAttrs()))
 
 attrnames = {
         resChanged:     'Changed',
@@ -51,9 +51,9 @@
     return names
 
 def test():
-    print "=== Local resourcess ==="
+    print("=== Local resourcess ===")
     list1resources()
-    print "=== All resources ==="
+    print("=== All resources ===")
     listresources()
 
 if __name__ == '__main__':
diff --git a/Mac/Demo/sound/playaiff.py b/Mac/Demo/sound/playaiff.py
index 8237895..087f7c9 100644
--- a/Mac/Demo/sound/playaiff.py
+++ b/Mac/Demo/sound/playaiff.py
@@ -5,16 +5,16 @@
 
 fn = 'f:just samples:2ndbeat.aif'
 af = aifc.open(fn, 'r')
-print af.getparams()
-print 'nframes  =', af.getnframes()
-print 'nchannels =', af.getnchannels()
-print 'framerate =', af.getframerate()
+print(af.getparams())
+print('nframes  =', af.getnframes())
+print('nchannels =', af.getnchannels())
+print('framerate =', af.getframerate())
 nframes = min(af.getnframes(), 100000)
 frames = af.readframes(nframes)
-print 'len(frames) =', len(frames)
-print repr(frames[:100])
+print('len(frames) =', len(frames))
+print(repr(frames[:100]))
 frames = audioop.add(frames, '\x80'*len(frames), 1)
-print repr(frames[:100])
+print(repr(frames[:100]))
 
 import struct
 
@@ -27,7 +27,7 @@
                       0xFF,
                       60,
                       nframes)
-print repr(header1)
+print(repr(header1))
 header2 = struct.pack('llhlll', 0, 0, 0, 0, 0, 0)
 header3 = struct.pack('hhlll',
                       af.getsampwidth()*8,
@@ -35,7 +35,7 @@
                       0,
                       0,
                       0)
-print repr(header3)
+print(repr(header3))
 header = header1 + header2 + header3
 
 buffer = header + frames
diff --git a/Mac/Demo/textedit/ped.py b/Mac/Demo/textedit/ped.py
index 8cd4713..f28ae3c 100644
--- a/Mac/Demo/textedit/ped.py
+++ b/Mac/Demo/textedit/ped.py
@@ -50,7 +50,7 @@
         height = self.ted.nLines * self.ted.lineHeight
         vx = self.scalebarvalue(dr[0], dr[2]-dr[0], vr[0], vr[2])
         vy = self.scalebarvalue(dr[1], dr[1]+height, vr[1], vr[3])
-        print dr, vr, height, vx, vy
+        print(dr, vr, height, vx, vy)
         return None, vy
 
     def scrollbar_callback(self, which, what, value):
@@ -72,12 +72,12 @@
                 if delta >= 0:
                     delta = -self.ted.lineHeight
             self.ted.TEPinScroll(0, delta)
-            print 'SCROLL Y', delta
+            print('SCROLL Y', delta)
         else:
             pass # No horizontal scrolling
 
     def do_activate(self, onoff, evt):
-        print "ACTIVATE", onoff
+        print("ACTIVATE", onoff)
         ScrolledWindow.do_activate(self, onoff, evt)
         if onoff:
             self.ted.TEActivate()
@@ -121,7 +121,7 @@
         if not self.path:
             self.menu_save_as()
             return # Will call us recursively
-        print 'Saving to ', self.path
+        print('Saving to ', self.path)
         dhandle = self.ted.TEGetText()
         data = dhandle.data
         fp = open(self.path, 'wb')  # NOTE: wb, because data has CR for end-of-line
diff --git a/Mac/Extras.install.py b/Mac/Extras.install.py
index ce00af3..ab1af71 100644
--- a/Mac/Extras.install.py
+++ b/Mac/Extras.install.py
@@ -25,23 +25,23 @@
         assert cursrc.startswith(src)
         curdst = dst + cursrc[len(src):]
         if verbose:
-            print "mkdir", curdst
+            print("mkdir", curdst)
         if not debug:
             if not os.path.exists(curdst):
                 os.makedirs(curdst)
         for fn in files:
             if isclean(fn):
                 if verbose:
-                    print "copy", os.path.join(cursrc, fn), os.path.join(curdst, fn)
+                    print("copy", os.path.join(cursrc, fn), os.path.join(curdst, fn))
                 if not debug:
                     shutil.copy2(os.path.join(cursrc, fn), os.path.join(curdst, fn))
             else:
                 if verbose:
-                    print "skipfile", os.path.join(cursrc, fn)
+                    print("skipfile", os.path.join(cursrc, fn))
         for i in range(len(dirs)-1, -1, -1):
             if not isclean(dirs[i]):
                 if verbose:
-                    print "skipdir", os.path.join(cursrc, dirs[i])
+                    print("skipdir", os.path.join(cursrc, dirs[i]))
                 del dirs[i]
 
 def main():
diff --git a/Mac/Modules/ae/aescan.py b/Mac/Modules/ae/aescan.py
index 0ea367c..c23d18f 100644
--- a/Mac/Modules/ae/aescan.py
+++ b/Mac/Modules/ae/aescan.py
@@ -13,18 +13,18 @@
 from scantools import Scanner
 
 def main():
-    print "=== Scanning AEDataModel.h, AppleEvents.h, AERegistry.h, AEObjects.h ==="
+    print("=== Scanning AEDataModel.h, AppleEvents.h, AERegistry.h, AEObjects.h ===")
     input = ["AEDataModel.h", "AEInteraction.h", "AppleEvents.h", "AERegistry.h", "AEObjects.h"]
     output = "aegen.py"
     defsoutput = TOOLBOXDIR + "AppleEvents.py"
     scanner = AppleEventsScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done Scanning and Generating, now doing 'import aesupport' ==="
+    print("=== Done Scanning and Generating, now doing 'import aesupport' ===")
     import aesupport
-    print "=== Done 'import aesupport'.  It's up to you to compile AEmodule.c ==="
+    print("=== Done 'import aesupport'.  It's up to you to compile AEmodule.c ===")
 
 class AppleEventsScanner(Scanner):
 
diff --git a/Mac/Modules/ah/ahscan.py b/Mac/Modules/ah/ahscan.py
index 8768b60..f52b771 100644
--- a/Mac/Modules/ah/ahscan.py
+++ b/Mac/Modules/ah/ahscan.py
@@ -17,11 +17,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner_OSX):
 
diff --git a/Mac/Modules/app/appscan.py b/Mac/Modules/app/appscan.py
index 246d61e..fa154ca 100644
--- a/Mac/Modules/app/appscan.py
+++ b/Mac/Modules/app/appscan.py
@@ -17,11 +17,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/carbonevt/CarbonEvtscan.py b/Mac/Modules/carbonevt/CarbonEvtscan.py
index 7307327..e29456f 100644
--- a/Mac/Modules/carbonevt/CarbonEvtscan.py
+++ b/Mac/Modules/carbonevt/CarbonEvtscan.py
@@ -12,18 +12,18 @@
 from scantools import Scanner, Scanner_OSX
 
 def main():
-    print "---Scanning CarbonEvents.h---"
+    print("---Scanning CarbonEvents.h---")
     input = ["CarbonEvents.h"]
     output = "CarbonEventsgen.py"
     defsoutput = TOOLBOXDIR + "CarbonEvents.py"
     scanner = CarbonEvents_Scanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "--done scanning, importing--"
+    print("--done scanning, importing--")
     import CarbonEvtsupport
-    print "done"
+    print("done")
 
 RefObjectTypes = ["EventRef",
                                 "EventQueueRef",
diff --git a/Mac/Modules/cf/cfscan.py b/Mac/Modules/cf/cfscan.py
index 5ff9534..20751ae 100644
--- a/Mac/Modules/cf/cfscan.py
+++ b/Mac/Modules/cf/cfscan.py
@@ -44,11 +44,11 @@
     scanner.scan()
     scanner.gentypetest(SHORT+"typetest.py")
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner_OSX):
 
diff --git a/Mac/Modules/cg/cgscan.py b/Mac/Modules/cg/cgscan.py
index 82f4919..ba0ff2a 100755
--- a/Mac/Modules/cg/cgscan.py
+++ b/Mac/Modules/cg/cgscan.py
@@ -22,11 +22,11 @@
     scanner.scan()
     scanner.gentypetest(SHORT+"typetest.py")
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner_OSX):
 
diff --git a/Mac/Modules/cm/cmscan.py b/Mac/Modules/cm/cmscan.py
index 1a1e46d..bbe0210 100644
--- a/Mac/Modules/cm/cmscan.py
+++ b/Mac/Modules/cm/cmscan.py
@@ -16,11 +16,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/ctl/ctlscan.py b/Mac/Modules/ctl/ctlscan.py
index dd74d23..323ff9a 100644
--- a/Mac/Modules/ctl/ctlscan.py
+++ b/Mac/Modules/ctl/ctlscan.py
@@ -14,11 +14,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now doing 'import ctlsupport' ==="
+    print("=== Done scanning and generating, now doing 'import ctlsupport' ===")
     import ctlsupport
-    print "=== Done.  It's up to you to compile Ctlmodule.c ==="
+    print("=== Done.  It's up to you to compile Ctlmodule.c ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/dlg/dlgscan.py b/Mac/Modules/dlg/dlgscan.py
index bf37129..fbdbc50 100644
--- a/Mac/Modules/dlg/dlgscan.py
+++ b/Mac/Modules/dlg/dlgscan.py
@@ -18,11 +18,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/drag/dragscan.py b/Mac/Modules/drag/dragscan.py
index e89897a..b1aa6d5 100644
--- a/Mac/Modules/drag/dragscan.py
+++ b/Mac/Modules/drag/dragscan.py
@@ -25,11 +25,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now doing 'import dragsupport' ==="
+    print("=== Done scanning and generating, now doing 'import dragsupport' ===")
     import dragsupport
-    print "=== Done.  It's up to you to compile Dragmodule.c ==="
+    print("=== Done.  It's up to you to compile Dragmodule.c ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/evt/evtscan.py b/Mac/Modules/evt/evtscan.py
index 0adce8b..8501f01 100644
--- a/Mac/Modules/evt/evtscan.py
+++ b/Mac/Modules/evt/evtscan.py
@@ -17,11 +17,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/file/filescan.py b/Mac/Modules/file/filescan.py
index b7c5d12..574a9d6 100644
--- a/Mac/Modules/file/filescan.py
+++ b/Mac/Modules/file/filescan.py
@@ -17,11 +17,11 @@
     scanner.scan()
     scanner.close()
     scanner.gentypetest(SHORT+"typetest.py")
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner_OSX):
 
diff --git a/Mac/Modules/fm/fmscan.py b/Mac/Modules/fm/fmscan.py
index 38abcac..ec6c597 100644
--- a/Mac/Modules/fm/fmscan.py
+++ b/Mac/Modules/fm/fmscan.py
@@ -16,11 +16,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/folder/folderscan.py b/Mac/Modules/folder/folderscan.py
index cccb720..2630642 100644
--- a/Mac/Modules/folder/folderscan.py
+++ b/Mac/Modules/folder/folderscan.py
@@ -18,11 +18,11 @@
     scanner.scan()
     scanner.close()
     scanner.gentypetest(SHORT+"typetest.py")
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner_OSX):
 
diff --git a/Mac/Modules/help/helpscan.py b/Mac/Modules/help/helpscan.py
index fa8dbde..7ad82e5 100644
--- a/Mac/Modules/help/helpscan.py
+++ b/Mac/Modules/help/helpscan.py
@@ -17,11 +17,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/ibcarbon/IBCarbonscan.py b/Mac/Modules/ibcarbon/IBCarbonscan.py
index eb7267d..9470dac 100644
--- a/Mac/Modules/ibcarbon/IBCarbonscan.py
+++ b/Mac/Modules/ibcarbon/IBCarbonscan.py
@@ -10,18 +10,18 @@
 from scantools import Scanner_OSX
 
 def main():
-    print "---Scanning IBCarbonRuntime.h---"
+    print("---Scanning IBCarbonRuntime.h---")
     input = ["IBCarbonRuntime.h"]
     output = "IBCarbongen.py"
     defsoutput = TOOLBOXDIR + "IBCarbonRuntime.py"
     scanner = IBCarbon_Scanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "--done scanning, importing--"
+    print("--done scanning, importing--")
     import IBCarbonsupport
-    print "done"
+    print("done")
 
 class IBCarbon_Scanner(Scanner_OSX):
 
diff --git a/Mac/Modules/icn/icnscan.py b/Mac/Modules/icn/icnscan.py
index 2d20062..3ee357c 100644
--- a/Mac/Modules/icn/icnscan.py
+++ b/Mac/Modules/icn/icnscan.py
@@ -17,11 +17,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/launch/launchscan.py b/Mac/Modules/launch/launchscan.py
index dd43e37..8d535fb 100644
--- a/Mac/Modules/launch/launchscan.py
+++ b/Mac/Modules/launch/launchscan.py
@@ -18,11 +18,11 @@
     scanner.scan()
     scanner.close()
     scanner.gentypetest(SHORT+"typetest.py")
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/list/listscan.py b/Mac/Modules/list/listscan.py
index 14e7dca..233ad5f 100644
--- a/Mac/Modules/list/listscan.py
+++ b/Mac/Modules/list/listscan.py
@@ -17,11 +17,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/menu/menuscan.py b/Mac/Modules/menu/menuscan.py
index 46afe16..bcd5019 100644
--- a/Mac/Modules/menu/menuscan.py
+++ b/Mac/Modules/menu/menuscan.py
@@ -13,11 +13,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now doing 'import menusupport' ==="
+    print("=== Done scanning and generating, now doing 'import menusupport' ===")
     import menusupport
-    print "=== Done.  It's up to you to compile Menumodule.c ==="
+    print("=== Done.  It's up to you to compile Menumodule.c ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/mlte/mltescan.py b/Mac/Modules/mlte/mltescan.py
index 9566ad7..ee095ec 100644
--- a/Mac/Modules/mlte/mltescan.py
+++ b/Mac/Modules/mlte/mltescan.py
@@ -19,11 +19,11 @@
     scanner.scan()
     scanner.gentypetest(SHORT+"typetest.py")
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner_OSX):
 
diff --git a/Mac/Modules/osa/osascan.py b/Mac/Modules/osa/osascan.py
index 8bad4b7..085dd10 100644
--- a/Mac/Modules/osa/osascan.py
+++ b/Mac/Modules/osa/osascan.py
@@ -17,11 +17,11 @@
     scanner.scan()
     scanner.close()
     scanner.gentypetest(SHORT+"typetest.py")
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/qd/qdscan.py b/Mac/Modules/qd/qdscan.py
index c601b0e..9c52f14 100644
--- a/Mac/Modules/qd/qdscan.py
+++ b/Mac/Modules/qd/qdscan.py
@@ -28,7 +28,7 @@
     except IOError:
         pass
     if have_extra:
-        print "=== Copying QuickDrawText stuff into main files... ==="
+        print("=== Copying QuickDrawText stuff into main files... ===")
         ifp = open("@qdgentext.py")
         ofp = open("qdgen.py", "a")
         ofp.write(ifp.read())
@@ -40,11 +40,11 @@
         ifp.close()
         ofp.close()
 
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     import qdsupport
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/qdoffs/qdoffsscan.py b/Mac/Modules/qdoffs/qdoffsscan.py
index 7e8f316..a7bf518 100644
--- a/Mac/Modules/qdoffs/qdoffsscan.py
+++ b/Mac/Modules/qdoffs/qdoffsscan.py
@@ -13,11 +13,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     import qdoffssupport
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/qt/qtscan.py b/Mac/Modules/qt/qtscan.py
index ac56144..97a776b 100644
--- a/Mac/Modules/qt/qtscan.py
+++ b/Mac/Modules/qt/qtscan.py
@@ -34,11 +34,11 @@
     scanner.scan()
     scanner.close()
     scanner.gentypetest(SHORT+"typetest.py")
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/res/resscan.py b/Mac/Modules/res/resscan.py
index 853fa13..42f01e0 100644
--- a/Mac/Modules/res/resscan.py
+++ b/Mac/Modules/res/resscan.py
@@ -19,11 +19,11 @@
     scanner = ResourcesScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now doing 'import ressupport' ==="
+    print("=== Done scanning and generating, now doing 'import ressupport' ===")
     import ressupport
-    print "=== Done 'import ressupport'.  It's up to you to compile Resmodule.c ==="
+    print("=== Done 'import ressupport'.  It's up to you to compile Resmodule.c ===")
 
 class ResourcesScanner(Scanner):
 
diff --git a/Mac/Modules/scrap/scrapscan.py b/Mac/Modules/scrap/scrapscan.py
index 7521fba..6239e92 100644
--- a/Mac/Modules/scrap/scrapscan.py
+++ b/Mac/Modules/scrap/scrapscan.py
@@ -21,9 +21,9 @@
     scanner.close()
 ##      print "=== Testing definitions output code ==="
 ##      exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/snd/sndscan.py b/Mac/Modules/snd/sndscan.py
index bcdd062..4c4a226 100644
--- a/Mac/Modules/snd/sndscan.py
+++ b/Mac/Modules/snd/sndscan.py
@@ -16,11 +16,11 @@
     scanner = SoundScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now doing 'import sndsupport' ==="
+    print("=== Done scanning and generating, now doing 'import sndsupport' ===")
     import sndsupport
-    print "=== Done.  It's up to you to compile Sndmodule.c ==="
+    print("=== Done.  It's up to you to compile Sndmodule.c ===")
 
 class SoundScanner(Scanner):
 
diff --git a/Mac/Modules/te/tescan.py b/Mac/Modules/te/tescan.py
index c0d6e1c..316b7fb 100644
--- a/Mac/Modules/te/tescan.py
+++ b/Mac/Modules/te/tescan.py
@@ -17,11 +17,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     exec "import " + SHORT + "support"
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Modules/win/winscan.py b/Mac/Modules/win/winscan.py
index 8d2cea9..023c737 100644
--- a/Mac/Modules/win/winscan.py
+++ b/Mac/Modules/win/winscan.py
@@ -13,11 +13,11 @@
     scanner = MyScanner(input, output, defsoutput)
     scanner.scan()
     scanner.close()
-    print "=== Testing definitions output code ==="
+    print("=== Testing definitions output code ===")
     exec(open(defsoutput).read(), {}, {})
-    print "=== Done scanning and generating, now importing the generated code... ==="
+    print("=== Done scanning and generating, now importing the generated code... ===")
     import winsupport
-    print "=== Done.  It's up to you to compile it now! ==="
+    print("=== Done.  It's up to you to compile it now! ===")
 
 class MyScanner(Scanner):
 
diff --git a/Mac/Tools/Doc/setup.py b/Mac/Tools/Doc/setup.py
index bd86a20..5f60c51 100644
--- a/Mac/Tools/Doc/setup.py
+++ b/Mac/Tools/Doc/setup.py
@@ -100,7 +100,7 @@
         if os.path.isdir(origPath):
             self.mkpath(outPath)
         elif ext == '.html':
-            if self.verbose: print 'hacking %s to %s' % (origPath,outPath)
+            if self.verbose: print('hacking %s to %s' % (origPath,outPath))
             hackedFile = file(outPath, 'w')
             origFile = file(origPath,'r')
             hackedFile.write(self.r.sub('<dl><dt><dd>', origFile.read()))
@@ -118,7 +118,7 @@
     def makeHelpIndex(self):
         app = '/Developer/Applications/Apple Help Indexing Tool.app'
         self.spawn('open', '-a', app , self.build_dest)
-        print "Please wait until Apple Help Indexing Tool finishes before installing"
+        print("Please wait until Apple Help Indexing Tool finishes before installing")
 
     def makeHelpIndex(self):
         app = HelpIndexingTool.HelpIndexingTool(start=1)
@@ -180,18 +180,18 @@
             self.build_dest = build_cmd.build_dest
         if self.install_doc == None:
             self.install_doc = os.path.join(self.prefix, DESTDIR)
-        print 'INSTALL', self.build_dest, '->', self.install_doc
+        print('INSTALL', self.build_dest, '->', self.install_doc)
 
     def run(self):
         self.finalize_options()
         self.ensure_finalized()
-        print "Running Installer"
+        print("Running Installer")
         instloc = self.install_doc
         if self.root:
             instloc = change_root(self.root, instloc)
         self.mkpath(instloc)
         copy_tree(self.build_dest, instloc)
-        print "Installation complete"
+        print("Installation complete")
 
 def mungeVersion(infile, outfile):
     i = file(infile,'r')
diff --git a/Mac/Tools/fixapplepython23.py b/Mac/Tools/fixapplepython23.py
index 6ba5401..01a09b5 100644
--- a/Mac/Tools/fixapplepython23.py
+++ b/Mac/Tools/fixapplepython23.py
@@ -57,23 +57,23 @@
             continue
         i = findline(lines, old)
         if i < 0:
-            print 'fixapplepython23: Python installation not fixed (appears broken)'
-            print 'fixapplepython23: missing line:', old
+            print('fixapplepython23: Python installation not fixed (appears broken)')
+            print('fixapplepython23: missing line:', old)
             return 2
         lines[i] = new
         fixed = True
 
     if fixed:
         if do_apply:
-            print 'fixapplepython23: Fix to Apple-installed Python 2.3 applied'
+            print('fixapplepython23: Fix to Apple-installed Python 2.3 applied')
             os.rename(makefile, makefile + '~')
             open(makefile, 'w').writelines(lines)
             return 0
         else:
-            print 'fixapplepython23: Fix to Apple-installed Python 2.3 should be applied'
+            print('fixapplepython23: Fix to Apple-installed Python 2.3 should be applied')
             return 1
     else:
-        print 'fixapplepython23: No fix needed, appears to have been applied before'
+        print('fixapplepython23: No fix needed, appears to have been applied before')
         return 0
 
 def makescript(filename, compiler):
@@ -85,7 +85,7 @@
     fp.write(SCRIPT % compiler)
     fp.close()
     os.chmod(filename, 0755)
-    print 'fixapplepython23: Created', filename
+    print('fixapplepython23: Created', filename)
 
 def main():
     # Check for -n option
@@ -96,24 +96,24 @@
     # First check OS version
     if sys.byteorder == 'little':
         # All intel macs are fine
-        print "fixapplypython23: no fix is needed on MacOSX on Intel"
+        print("fixapplypython23: no fix is needed on MacOSX on Intel")
         sys.exit(0)
 
     if gestalt.gestalt('sysv') < 0x1030:
-        print 'fixapplepython23: no fix needed on MacOSX < 10.3'
+        print('fixapplepython23: no fix needed on MacOSX < 10.3')
         sys.exit(0)
 
     if gestalt.gestalt('sysv') >= 0x1040:
-        print 'fixapplepython23: no fix needed on MacOSX >= 10.4'
+        print('fixapplepython23: no fix needed on MacOSX >= 10.4')
         sys.exit(0)
 
     # Test that a framework Python is indeed installed
     if not os.path.exists(MAKEFILE):
-        print 'fixapplepython23: Python framework does not appear to be installed (?), nothing fixed'
+        print('fixapplepython23: Python framework does not appear to be installed (?), nothing fixed')
         sys.exit(0)
     # Check that we can actually write the file
     if do_apply and not os.access(MAKEFILE, os.W_OK):
-        print 'fixapplepython23: No write permission, please run with "sudo"'
+        print('fixapplepython23: No write permission, please run with "sudo"')
         sys.exit(2)
     # Create the shell scripts
     if do_apply:
diff --git a/Mac/scripts/BuildApplet.py b/Mac/scripts/BuildApplet.py
index 9ddcd0b..e1f9ea1 100644
--- a/Mac/scripts/BuildApplet.py
+++ b/Mac/scripts/BuildApplet.py
@@ -116,18 +116,18 @@
                         progress=verbose, destroot=destroot)
 
 def usage():
-    print "BuildApplet creates an application from a Python source file"
-    print "Usage:"
-    print "  BuildApplet     interactive, single file, no options"
-    print "  BuildApplet src1.py src2.py ...   non-interactive multiple file"
-    print "  BuildApplet [options] src.py    non-interactive single file"
-    print "Options:"
-    print "  --output o        Output file; default based on source filename, short -o"
-    print "  --resource r      Resource file; default based on source filename, short -r"
-    print "  --noargv          Build applet without drag-and-drop sys.argv emulation, short -n, OSX only"
-    print "  --extra src[:dst] Extra file to put in .app bundle, short -e, OSX only"
-    print "  --verbose         Verbose, short -v"
-    print "  --help            This message, short -?"
+    print("BuildApplet creates an application from a Python source file")
+    print("Usage:")
+    print("  BuildApplet     interactive, single file, no options")
+    print("  BuildApplet src1.py src2.py ...   non-interactive multiple file")
+    print("  BuildApplet [options] src.py    non-interactive single file")
+    print("Options:")
+    print("  --output o        Output file; default based on source filename, short -o")
+    print("  --resource r      Resource file; default based on source filename, short -r")
+    print("  --noargv          Build applet without drag-and-drop sys.argv emulation, short -n, OSX only")
+    print("  --extra src[:dst] Extra file to put in .app bundle, short -e, OSX only")
+    print("  --verbose         Verbose, short -v")
+    print("  --help            This message, short -?")
     sys.exit(1)
 
 class Verbose:
diff --git a/Mac/scripts/bgenall.py b/Mac/scripts/bgenall.py
index 1fe5f34..dc33163 100644
--- a/Mac/scripts/bgenall.py
+++ b/Mac/scripts/bgenall.py
@@ -6,7 +6,7 @@
 
 def bgenone(dirname, shortname):
     os.chdir(dirname)
-    print '%s:'%shortname
+    print('%s:'%shortname)
     # Sigh, we don't want to lose CVS history, so two
     # modules have funny names:
     if shortname == 'carbonevt':
@@ -18,12 +18,12 @@
     try:
         m = __import__(modulename)
     except:
-        print "Error:", shortname, sys.exc_info()[1]
+        print("Error:", shortname, sys.exc_info()[1])
         return 0
     try:
         m.main()
     except:
-        print "Error:", shortname, sys.exc_info()[1]
+        print("Error:", shortname, sys.exc_info()[1])
         return 0
     return 1
 
@@ -45,9 +45,9 @@
                 success.append(name)
             else:
                 failure.append(name)
-    print 'Done:', string.join(success, ' ')
+    print('Done:', string.join(success, ' '))
     if failure:
-        print 'Failed:', string.join(failure, ' ')
+        print('Failed:', string.join(failure, ' '))
         return 0
     return 1
 
diff --git a/Mac/scripts/buildpkg.py b/Mac/scripts/buildpkg.py
index e50c405..73dd4b6 100644
--- a/Mac/scripts/buildpkg.py
+++ b/Mac/scripts/buildpkg.py
@@ -417,18 +417,18 @@
     "Print usage message."
 
     format = "Usage: %s <opts1> [<opts2>] <root> [<resources>]"
-    print format % basename(sys.argv[0])
-    print
-    print "       with arguments:"
-    print "           (mandatory) root:         the package root folder"
-    print "           (optional)  resources:    the package resources folder"
-    print
-    print "       and options:"
-    print "           (mandatory) opts1:"
+    print(format % basename(sys.argv[0]))
+    print()
+    print("       with arguments:")
+    print("           (mandatory) root:         the package root folder")
+    print("           (optional)  resources:    the package resources folder")
+    print()
+    print("       and options:")
+    print("           (mandatory) opts1:")
     mandatoryKeys = string.split("Title Version Description", " ")
     for k in mandatoryKeys:
-        print "               --%s" % k
-    print "           (optional) opts2: (with default values)"
+        print("               --%s" % k)
+    print("           (optional) opts2: (with default values)")
 
     pmDefaults = PackageMaker.packageInfoDefaults
     optionalKeys = pmDefaults.keys()
@@ -439,7 +439,7 @@
     for k in optionalKeys:
         format = "               --%%s:%s %%s"
         format = format % (" " * (maxKeyLen-len(k)))
-        print format % (k, repr(pmDefaults[k]))
+        print(format % (k, repr(pmDefaults[k])))
 
 
 def main():
@@ -452,7 +452,7 @@
     try:
         opts, args = getopt.getopt(sys.argv[1:], shortOpts, longOpts)
     except getopt.GetoptError as details:
-        print details
+        print(details)
         printUsage()
         return
 
@@ -462,11 +462,11 @@
 
     ok = optsDict.keys()
     if not (1 <= len(args) <= 2):
-        print "No argument given!"
+        print("No argument given!")
     elif not ("Title" in ok and \
               "Version" in ok and \
               "Description" in ok):
-        print "Missing mandatory option!"
+        print("Missing mandatory option!")
     else:
         buildPackage(*args, **optsDict)
         return
diff --git a/Mac/scripts/mkestrres.py b/Mac/scripts/mkestrres.py
index 715b8c6..d423892 100644
--- a/Mac/scripts/mkestrres.py
+++ b/Mac/scripts/mkestrres.py
@@ -68,9 +68,9 @@
             if not dict.has_key(number):
                 dict[number] = desc, name
             else:
-                print 'DUPLICATE', number
-                print '\t', dict[number]
-                print '\t', (desc, name)
+                print('DUPLICATE', number)
+                print('\t', dict[number])
+                print('\t', (desc, name))
 
 def parse_errors_h(fp, dict):
     errno_prog = re.compile(ERRORS_PROG)
@@ -95,11 +95,11 @@
             if not dict.has_key(number):
                 dict[number] = desc, name
             else:
-                print 'DUPLICATE', number
-                print '\t', dict[number]
-                print '\t', (desc, name)
+                print('DUPLICATE', number)
+                print('\t', dict[number])
+                print('\t', (desc, name))
                 if len(desc) > len(dict[number][0]):
-                    print 'Pick second one'
+                    print('Pick second one')
                     dict[number] = desc, name
 
 def main():
diff --git a/Mac/scripts/zappycfiles.py b/Mac/scripts/zappycfiles.py
index a8193c1..77258da 100644
--- a/Mac/scripts/zappycfiles.py
+++ b/Mac/scripts/zappycfiles.py
@@ -16,7 +16,7 @@
                 sys.exit(0)
             zappyc(dir)
         else:
-            print 'Usage: zappyc dir ...'
+            print('Usage: zappyc dir ...')
             sys.exit(1)
     for dir in sys.argv[1:]:
         zappyc(dir)
@@ -28,7 +28,7 @@
     for name in names:
         if name[-4:] in ('.pyc', '.pyo'):
             path = os.path.join(top, name)
-            print 'Zapping', path
+            print('Zapping', path)
             if doit:
                 os.unlink(path)