diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py
index 8ae31b2..13b0e57 100644
--- a/Lib/test/test_gzip.py
+++ b/Lib/test/test_gzip.py
@@ -5,9 +5,8 @@
 import unittest
 from test import test_support
 import os
-import gzip
 import struct
-
+gzip = test_support.import_module('gzip')
 
 data1 = """  int length=DEFAULTALLOC, err = Z_OK;
   PyObject *RetVal;
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 652274f..3f86b32 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -311,6 +311,7 @@
         self.assertEqual(zipfp.read(TESTFN), file(TESTFN).read())
         zipfp.close()
 
+    @skipUnless(zlib, "requires zlib")
     def test_per_file_compression(self):
         # Check that files within a Zip archive can have different compression options
         zipfp = zipfile.ZipFile(TESTFN2, "w")
@@ -882,6 +883,7 @@
         self.zip2.setpassword("perl")
         self.assertRaises(RuntimeError, self.zip2.read, "zero")
 
+    @skipUnless(zlib, "requires zlib")
     def test_good_password(self):
         self.zip.setpassword("python")
         self.assertEquals(self.zip.read("test.txt"), self.plain)
@@ -982,6 +984,7 @@
             self.zip_random_open_test(f, zipfile.ZIP_STORED)
 
 
+@skipUnless(zlib, "requires zlib")
 class TestsWithMultipleOpens(unittest.TestCase):
     def setUp(self):
         # Create the ZIP archive
diff --git a/Lib/test/test_zipimport.py b/Lib/test/test_zipimport.py
index 3072230..f15958c 100644
--- a/Lib/test/test_zipimport.py
+++ b/Lib/test/test_zipimport.py
@@ -6,11 +6,17 @@
 import time
 import unittest
 
-import zlib # implied prerequisite
-from zipfile import ZipFile, ZipInfo, ZIP_STORED, ZIP_DEFLATED
 from test import test_support
 from test.test_importhooks import ImportHooksBaseTestCase, test_src, test_co
 
+# some tests can be ran even without zlib
+try:
+    import zlib
+except ImportError:
+    zlib = None
+
+from zipfile import ZipFile, ZipInfo, ZIP_STORED, ZIP_DEFLATED
+
 import zipimport
 import linecache
 import doctest
@@ -53,6 +59,7 @@
 TESTPACK2 = "ziptestpackage2"
 TEMP_ZIP = os.path.abspath("junk95142" + os.extsep + "zip")
 
+
 class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
 
     compression = ZIP_STORED
@@ -357,7 +364,6 @@
     def testDoctestSuite(self):
         self.runDoctest(self.doDoctestSuite)
 
-
     def doTraceback(self, module):
         try:
             module.do_raise()
@@ -381,6 +387,7 @@
         self.doTest(None, files, TESTMOD, call=self.doTraceback)
 
 
+@unittest.skipUnless(zlib, "requires zlib")
 class CompressedZipImportTestCase(UncompressedZipImportTestCase):
     compression = ZIP_DEFLATED
 
