diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py
index 5d249f3..9b9f551 100644
--- a/Lib/distutils/command/build_py.py
+++ b/Lib/distutils/command/build_py.py
@@ -5,6 +5,7 @@
 __revision__ = "$Id$"
 
 import os
+import sys
 from glob import glob
 
 from distutils.core import Command
@@ -372,6 +373,10 @@
                 self.build_module(module, module_file, package)
 
     def byte_compile(self, files):
+        if sys.dont_write_bytecode:
+            self.warn('byte-compile not supported on this platform, skipping.')
+            return
+
         from distutils.util import byte_compile
         prefix = self.build_lib
         if prefix[-1] != os.sep:
diff --git a/Lib/distutils/command/install_lib.py b/Lib/distutils/command/install_lib.py
index 411db79..7b4b45b 100644
--- a/Lib/distutils/command/install_lib.py
+++ b/Lib/distutils/command/install_lib.py
@@ -6,6 +6,8 @@
 __revision__ = "$Id$"
 
 import os
+import sys
+
 from distutils.core import Command
 from distutils.errors import DistutilsOptionError
 
@@ -118,6 +120,10 @@
         return outfiles
 
     def byte_compile(self, files):
+        if sys.dont_write_bytecode:
+            self.warn('byte-compile not supported on this platform, skipping.')
+            return
+
         from distutils.util import byte_compile
 
         # Get the "--root" directory supplied to the "install" command,
diff --git a/Lib/distutils/errors.py b/Lib/distutils/errors.py
index 963d833..acecacc 100644
--- a/Lib/distutils/errors.py
+++ b/Lib/distutils/errors.py
@@ -74,6 +74,8 @@
 class DistutilsTemplateError (DistutilsError):
     """Syntax error in a file list template."""
 
+class DistutilsByteCompileError(DistutilsError):
+    """Byte compile error."""
 
 # Exception classes used by the CCompiler implementation classes
 class CCompilerError (Exception):
diff --git a/Lib/distutils/tests/test_build_py.py b/Lib/distutils/tests/test_build_py.py
index c815d81..e8c7ca9 100644
--- a/Lib/distutils/tests/test_build_py.py
+++ b/Lib/distutils/tests/test_build_py.py
@@ -89,6 +89,22 @@
             os.chdir(cwd)
             sys.stdout = sys.__stdout__
 
+    def test_dont_write_bytecode(self):
+        # makes sure byte_compile is not used
+        pkg_dir, dist = self.create_dist()
+        cmd = build_py(dist)
+        cmd.compile = 1
+        cmd.optimize = 1
+
+        old_dont_write_bytecode = sys.dont_write_bytecode
+        sys.dont_write_bytecode = True
+        try:
+            cmd.byte_compile([])
+        finally:
+            sys.dont_write_bytecode = old_dont_write_bytecode
+
+        self.assertTrue('byte-compile not supported ' in self.logs[0][1])
+
 def test_suite():
     return unittest.makeSuite(BuildPyTestCase)
 
diff --git a/Lib/distutils/tests/test_install_lib.py b/Lib/distutils/tests/test_install_lib.py
index b2185b8..fab66d1 100644
--- a/Lib/distutils/tests/test_install_lib.py
+++ b/Lib/distutils/tests/test_install_lib.py
@@ -31,6 +31,8 @@
         cmd.finalize_options()
         self.assertEquals(cmd.optimize, 2)
 
+    @unittest.skipUnless(not sys.dont_write_bytecode,
+                         'byte-compile not supported')
     def test_byte_compile(self):
         pkg_dir, dist = self.create_dist()
         cmd = install_lib(dist)
@@ -76,6 +78,21 @@
         # get_input should return 2 elements
         self.assertEquals(len(cmd.get_inputs()), 2)
 
+    def test_dont_write_bytecode(self):
+        # makes sure byte_compile is not used
+        pkg_dir, dist = self.create_dist()
+        cmd = install_lib(dist)
+        cmd.compile = 1
+        cmd.optimize = 1
+
+        old_dont_write_bytecode = sys.dont_write_bytecode
+        sys.dont_write_bytecode = True
+        try:
+            cmd.byte_compile([])
+        finally:
+            sys.dont_write_bytecode = old_dont_write_bytecode
+
+        self.assertTrue('byte-compile not supported ' in self.logs[0][1])
 
 def test_suite():
     return unittest.makeSuite(InstallLibTestCase)
diff --git a/Lib/distutils/tests/test_util.py b/Lib/distutils/tests/test_util.py
index 4099c95..4da1e65 100644
--- a/Lib/distutils/tests/test_util.py
+++ b/Lib/distutils/tests/test_util.py
@@ -1,7 +1,4 @@
 """Tests for distutils.util."""
-# not covered yet:
-#    - byte_compile
-#
 import os
 import sys
 import unittest
@@ -9,11 +6,12 @@
 from StringIO import StringIO
 import subprocess
 
-from distutils.errors import DistutilsPlatformError
+from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError
 from distutils.util import (get_platform, convert_path, change_root,
                             check_environ, split_quoted, strtobool,
                             rfc822_escape, get_compiler_versions,
-                            _find_exe_version, _MAC_OS_X_LD_VERSION)
+                            _find_exe_version, _MAC_OS_X_LD_VERSION,
+                            byte_compile)
 from distutils import util
 from distutils.sysconfig import get_config_vars
 from distutils import sysconfig
@@ -349,6 +347,16 @@
         res = get_compiler_versions()
         self.assertEquals(res[2], None)
 
+    def test_dont_write_bytecode(self):
+        # makes sure byte_compile raise a DistutilsError
+        # if sys.dont_write_bytecode is True
+        old_dont_write_bytecode = sys.dont_write_bytecode
+        sys.dont_write_bytecode = True
+        try:
+            self.assertRaises(DistutilsByteCompileError, byte_compile, [])
+        finally:
+            sys.dont_write_bytecode = False
+
 def test_suite():
     return unittest.makeSuite(UtilTestCase)
 
diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py
index fe6851c..a87ef44 100644
--- a/Lib/distutils/util.py
+++ b/Lib/distutils/util.py
@@ -13,6 +13,7 @@
 from distutils.spawn import spawn, find_executable
 from distutils import log
 from distutils.version import LooseVersion
+from distutils.errors import DistutilsByteCompileError
 
 def get_platform():
     """Return a string that identifies the current platform.
@@ -445,6 +446,10 @@
     generated in indirect mode; unless you know what you're doing, leave
     it set to None.
     """
+    # nothing is done if sys.dont_write_bytecode is True
+    if sys.dont_write_bytecode:
+        raise DistutilsByteCompileError('byte-compiling not supported.')
+
     # First, if the caller didn't force us into direct or indirect mode,
     # figure out which mode we should be in.  We take a conservative
     # approach: choose direct mode *only* if the current interpreter is
