Here's a patch that addresses the issue. Thus uses the same technique used in mf.py. I don't seem to have the ability to upload files, so I'll include it inline as well as here: http://paste.turbogears.org/paste/85301.

Index: py2exe/py2exe/build_exe.py

--- py2exe/py2exe/build_exe.py (revision 686)
+++ py2exe/py2exe/build_exe.py (working copy)
@@ -13,7 +13,12 @@
import sys, os, imp, types, stat
import marshal
import zipfile
-import sets
+try:
+ set
+ frozenset
+except NameError:
+ from sets import Set as set
+ from sets import ImmutableSet as frozenset
import tempfile
import struct
import re
@@ -660,7 +665,7 @@

# make sure all targets use the same directory, this is
# also the directory where the pythonXX.dll must reside
- paths = sets.Set()
+ paths = set()
for target in dist.com_server + dist.service \ + dist.windows + dist.console + dist.isapi:
paths.add(os.path.dirname(target.get_dest_base()))
@@ -1032,7 +1037,7 @@
# so the loadpath must be extended by our python path.
loadpath = loadpath + ';' + ';'.join(pypath)

- templates = sets.Set()
+ templates = set()
if self.distribution.console:
templates.add(self.get_console_template())
if self.distribution.windows: