diff --git a/Lib/distutils/cmd.py b/Lib/distutils/cmd.py
index 6e44221..fef4939 100644
--- a/Lib/distutils/cmd.py
+++ b/Lib/distutils/cmd.py
@@ -253,8 +253,8 @@
 
             if not ok:
                 raise DistutilsOptionError, \
-                      "'%s' must be a list of strings (got %s)" % \
-                      (option, `val`)
+                      "'%s' must be a list of strings (got %r)" % \
+                      (option, val)
 
     def _ensure_tested_string (self, option, tester,
                                what, error_fmt, default=None):
diff --git a/Lib/distutils/core.py b/Lib/distutils/core.py
index a463272..eb41972 100644
--- a/Lib/distutils/core.py
+++ b/Lib/distutils/core.py
@@ -202,7 +202,7 @@
     used to drive the Distutils.
     """
     if stop_after not in ('init', 'config', 'commandline', 'run'):
-        raise ValueError, "invalid value for 'stop_after': %s" % `stop_after`
+        raise ValueError, "invalid value for 'stop_after': %r" % (stop_after,)
 
     global _setup_stop_after, _setup_distribution
     _setup_stop_after = stop_after
diff --git a/Lib/distutils/dir_util.py b/Lib/distutils/dir_util.py
index bd1ea0f..e479b62 100644
--- a/Lib/distutils/dir_util.py
+++ b/Lib/distutils/dir_util.py
@@ -33,7 +33,7 @@
     # Detect a common bug -- name is None
     if type(name) is not StringType:
         raise DistutilsInternalError, \
-              "mkpath: 'name' must be a string (got %s)" % `name`
+              "mkpath: 'name' must be a string (got %r)" % (name,)
 
     # XXX what's the better way to handle verbosity? print as we create
     # each directory in the path (the current behaviour), or only announce
diff --git a/Lib/distutils/dist.py b/Lib/distutils/dist.py
index d313e7d..f63ea97 100644
--- a/Lib/distutils/dist.py
+++ b/Lib/distutils/dist.py
@@ -525,9 +525,9 @@
                         func()
                     else:
                         raise DistutilsClassError(
-                            "invalid help function %s for help option '%s': "
+                            "invalid help function %r for help option '%s': "
                             "must be a callable object (function, etc.)"
-                            % (`func`, help_option))
+                            % (func, help_option))
 
             if help_option_found:
                 return
diff --git a/Lib/distutils/fancy_getopt.py b/Lib/distutils/fancy_getopt.py
index a4a4e79..512bc9b 100644
--- a/Lib/distutils/fancy_getopt.py
+++ b/Lib/distutils/fancy_getopt.py
@@ -162,7 +162,7 @@
             else:
                 # the option table is part of the code, so simply
                 # assert that it is correct
-                assert "invalid option tuple: %s" % `option`
+                assert "invalid option tuple: %r" % (option,)
 
             # Type- and value-check the option names
             if type(long) is not StringType or len(long) < 2:
diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py
index dc3183b..8c3c8df 100644
--- a/Lib/distutils/util.py
+++ b/Lib/distutils/util.py
@@ -285,7 +285,7 @@
     print.
     """
     if msg is None:
-        msg = "%s%s" % (func.__name__, `args`)
+        msg = "%s%r" % (func.__name__, args)
         if msg[-2:] == ',)':        # correct for singleton tuple
             msg = msg[0:-2] + ')'
 
@@ -307,7 +307,7 @@
     elif val in ('n', 'no', 'f', 'false', 'off', '0'):
         return 0
     else:
-        raise ValueError, "invalid truth value %s" % `val`
+        raise ValueError, "invalid truth value %r" % (val,)
 
 
 def byte_compile (py_files,
@@ -394,11 +394,11 @@
 
             script.write(string.join(map(repr, py_files), ",\n") + "]\n")
             script.write("""
-byte_compile(files, optimize=%s, force=%s,
-             prefix=%s, base_dir=%s,
-             verbose=%s, dry_run=0,
+byte_compile(files, optimize=%r, force=%r,
+             prefix=%r, base_dir=%r,
+             verbose=%r, dry_run=0,
              direct=1)
-""" % (`optimize`, `force`, `prefix`, `base_dir`, `verbose`))
+""" % (optimize, force, prefix, base_dir, verbose))
 
             script.close()
 
@@ -432,8 +432,8 @@
             if prefix:
                 if file[:len(prefix)] != prefix:
                     raise ValueError, \
-                          ("invalid prefix: filename %s doesn't start with %s"
-                           % (`file`, `prefix`))
+                          ("invalid prefix: filename %r doesn't start with %r"
+                           % (file, prefix))
                 dfile = dfile[len(prefix):]
             if base_dir:
                 dfile = os.path.join(base_dir, dfile)
