diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst
index 11a1426..e9dfe65 100644
--- a/Doc/library/shutil.rst
+++ b/Doc/library/shutil.rst
@@ -238,7 +238,7 @@
 
    *base_name* is the name of the file to create, including the path, minus
    any format-specific extension. *format* is the archive format: one of
-   "zip", "tar", "bztar" or "gztar".
+   "zip", "tar", "bztar" (if the :mod:`bz2` module is available) or "gztar".
 
    *root_dir* is a directory that will be the root directory of the
    archive; i.e. we typically chdir into *root_dir* before creating the
@@ -264,7 +264,7 @@
    By default :mod:`shutil` provides these formats:
 
    - *gztar*: gzip'ed tar-file
-   - *bztar*: bzip2'ed tar-file
+   - *bztar*: bzip2'ed tar-file (if the :mod:`bz2` module is available.)
    - *tar*: uncompressed tar file
    - *zip*: ZIP file
 
@@ -346,7 +346,7 @@
    By default :mod:`shutil` provides these formats:
 
    - *gztar*: gzip'ed tar-file
-   - *bztar*: bzip2'ed tar-file
+   - *bztar*: bzip2'ed tar-file (if the :mod:`bz2` module is available.)
    - *tar*: uncompressed tar file
    - *zip*: ZIP file
 
diff --git a/Lib/shutil.py b/Lib/shutil.py
index c07f394..601d9c2 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -14,6 +14,12 @@
 import tarfile
 
 try:
+    import bz2
+    _BZ2_SUPPORTED = True
+except ImportError:
+    _BZ2_SUPPORTED = False
+
+try:
     from pwd import getpwnam
 except ImportError:
     getpwnam = None
@@ -376,13 +382,17 @@
 
     Returns the output filename.
     """
-    tar_compression = {'gzip': 'gz', 'bzip2': 'bz2', None: ''}
-    compress_ext = {'gzip': '.gz', 'bzip2': '.bz2'}
+    tar_compression = {'gzip': 'gz', None: ''}
+    compress_ext = {'gzip': '.gz'}
+
+    if _BZ2_SUPPORTED:
+        tar_compression['bzip2'] = 'bz2'
+        compress_ext['bzip2'] = '.bz2'
 
     # flags for compression program, each element of list will be an argument
     if compress is not None and compress not in compress_ext.keys():
-        raise ValueError("bad value for 'compress': must be None, 'gzip', or "
-                         "'bzip2'")
+        raise ValueError("bad value for 'compress', or compression format not "
+                         "supported : {0}".format(compress))
 
     archive_name = base_name + '.tar' + compress_ext.get(compress, '')
     archive_dir = os.path.dirname(archive_name)
@@ -488,6 +498,10 @@
     'zip':   (_make_zipfile, [],"ZIP file")
     }
 
+if _BZ2_SUPPORTED:
+    _ARCHIVE_FORMATS['bztar'] = (_make_tarball, [('compress', 'bzip2')],
+                                "bzip2'ed tar-file")
+
 def get_archive_formats():
     """Returns a list of supported formats for archiving and unarchiving.
 
@@ -690,11 +704,14 @@
 
 _UNPACK_FORMATS = {
     'gztar': (['.tar.gz', '.tgz'], _unpack_tarfile, [], "gzip'ed tar-file"),
-    'bztar': (['.bz2'], _unpack_tarfile, [], "bzip2'ed tar-file"),
     'tar':   (['.tar'], _unpack_tarfile, [], "uncompressed tar file"),
     'zip':   (['.zip'], _unpack_zipfile, [], "ZIP file")
     }
 
+if _BZ2_SUPPORTED:
+    _UNPACK_FORMATS['bztar'] = (['.bz2'], _unpack_tarfile, [],
+                                "bzip2'ed tar-file")
+
 def _find_unpack_format(filename):
     for name, info in _UNPACK_FORMATS.items():
         for extension in info[0]:
diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py
index b34165d..8e75003 100644
--- a/Lib/test/test_shutil.py
+++ b/Lib/test/test_shutil.py
@@ -22,6 +22,12 @@
 from test import support
 from test.support import TESTFN, check_warnings, captured_stdout
 
+try:
+    import bz2
+    BZ2_SUPPORTED = True
+except ImportError:
+    BZ2_SUPPORTED = False
+
 TESTFN2 = TESTFN + "2"
 
 try:
@@ -612,8 +618,11 @@
 
     @unittest.skipUnless(zlib, "Requires zlib")
     def test_unpack_archive(self):
+        formats = ['tar', 'gztar', 'zip']
+        if BZ2_SUPPORTED:
+            formats.append('bztar')
 
-        for format in ('tar', 'gztar', 'bztar', 'zip'):
+        for format in formats:
             tmpdir = self.mkdtemp()
             base_dir, root_dir, base_name =  self._create_files()
             tmpdir2 = self.mkdtemp()
