diff --git a/Lib/distutils/command/bdist_packager.py b/Lib/distutils/command/bdist_packager.py
index 11278ee..dde113c 100644
--- a/Lib/distutils/command/bdist_packager.py
+++ b/Lib/distutils/command/bdist_packager.py
@@ -145,7 +145,6 @@
 
 
     def initialize_options (self):
-        d = self.distribution
         self.keep_temp = 0
         self.control_only = 0
         self.no_autorelocate = 0
@@ -187,8 +186,7 @@
             self.pkg_dir = os.path.join(bdist_base, 'binary')
 
         if not self.plat_name:
-            d = self.distribution
-            self.plat = d.get_platforms()
+            self.plat = self.distribution.get_platforms()
         if self.distribution.has_ext_modules():
             self.plat_name = [sys.platform,]
         else:
@@ -237,12 +235,6 @@
 
         log.info("installing to %s", self.pkg_dir)
         self.run_command('install')
-
-        # And make an archive relative to the root of the
-        # pseudo-installation tree.
-        archive_basename = "%s.%s" % (self.distribution.get_fullname(),
-                                      self.plat_name)
-
         if not self.keep_temp:
             remove_tree(self.pkg_dir, dry_run=self.dry_run)
 
diff --git a/Lib/distutils/command/bdist_pkgtool.py b/Lib/distutils/command/bdist_pkgtool.py
index 9d6e7dc..3a48d26 100644
--- a/Lib/distutils/command/bdist_pkgtool.py
+++ b/Lib/distutils/command/bdist_pkgtool.py
@@ -208,7 +208,7 @@
         else:
             pkg_dir = self.pkg_dir
 
-        install = self.reinitialize_command('install', reinit_subcommands=1)
+        self.reinitialize_command('install', reinit_subcommands=1)
         # build package
         log.info('Building package')
         self.run_command('build')
@@ -275,7 +275,7 @@
         if self.subpackages:
             self.subpackages=string.split(self.subpackages,",")
             for pkg in self.subpackages:
-                self.make_package(subpackage)
+                self.make_package(pkg)
         else:
             self.make_package()
     # run()
diff --git a/Lib/distutils/core.py b/Lib/distutils/core.py
index 222e6ae..fbf5d51 100644
--- a/Lib/distutils/core.py
+++ b/Lib/distutils/core.py
@@ -125,9 +125,7 @@
     try:
         ok = dist.parse_command_line()
     except DistutilsArgError, msg:
-        script = os.path.basename(dist.script_name)
-        raise SystemExit, \
-              gen_usage(dist.script_name) + "\nerror: %s" % msg
+        raise SystemExit, gen_usage(dist.script_name) + "\nerror: %s" % msg
 
     if DEBUG:
         print "options (after parsing command line):"
diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py
index 3fb5bc9..443c9bc 100644
--- a/Lib/distutils/cygwinccompiler.py
+++ b/Lib/distutils/cygwinccompiler.py
@@ -213,7 +213,6 @@
 
             # generate the filenames for these files
             def_file = os.path.join(temp_dir, dll_name + ".def")
-            exp_file = os.path.join(temp_dir, dll_name + ".exp")
             lib_file = os.path.join(temp_dir, 'lib' + dll_name + ".a")
 
             # Generate .def file
@@ -229,16 +228,14 @@
 
             # dllwrap uses different options than gcc/ld
             if self.linker_dll == "dllwrap":
-                extra_preargs.extend([#"--output-exp",exp_file,
-                                       "--output-lib",lib_file,
-                                     ])
+                extra_preargs.extend(["--output-lib", lib_file])
                 # for dllwrap we have to use a special option
                 extra_preargs.extend(["--def", def_file])
             # we use gcc/ld here and can be sure ld is >= 2.9.10
             else:
                 # doesn't work: bfd_close build\...\libfoo.a: Invalid operation
                 #extra_preargs.extend(["-Wl,--out-implib,%s" % lib_file])
-                # for gcc/ld the def-file is specified as any other object files
+                # for gcc/ld the def-file is specified as any object files
                 objects.append(def_file)
 
         #end: if ((export_symbols is not None) and
diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py
index 2788209..644c6fc 100644
--- a/Lib/distutils/emxccompiler.py
+++ b/Lib/distutils/emxccompiler.py
@@ -174,11 +174,11 @@
 
             # generate the filenames for these files
             def_file = os.path.join(temp_dir, dll_name + ".def")
-            lib_file = os.path.join(temp_dir, dll_name + ".lib")
        
             # Generate .def file
             contents = [
-                "LIBRARY %s INITINSTANCE TERMINSTANCE" % os.path.splitext(os.path.basename(output_filename))[0],
+                "LIBRARY %s INITINSTANCE TERMINSTANCE" % \
+                os.path.splitext(os.path.basename(output_filename))[0],
                 "DATA MULTIPLE NONSHARED",
                 "EXPORTS"]
             for sym in export_symbols:
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index 3e32353..847b872 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -305,7 +305,6 @@
     while 1:
         m = _findvar1_rx.search(s) or _findvar2_rx.search(s)
         if m:
-            name = m.group(1)
             (beg, end) = m.span()
             s = s[0:beg] + vars.get(m.group(1)) + s[end:]
         else:
