diff --git a/Lib/test/test_aepack.py b/Lib/test/test_aepack.py
index 8a4b035..5d4ab3e 100755
--- a/Lib/test/test_aepack.py
+++ b/Lib/test/test_aepack.py
@@ -1,11 +1,12 @@
 # Copyright (C) 2003 Python Software Foundation
 
 import unittest
-import aepack
-import aetypes
 import os
 from test import test_support
 
+aetypes = test_support.import_module('aetypes')
+aepack = test_support.import_module('aepack')
+
 class TestAepack(unittest.TestCase):
     OBJECTS = [
         aetypes.Enum('enum'),
diff --git a/Lib/test/test_applesingle.py b/Lib/test/test_applesingle.py
index e915028..5a8201c 100644
--- a/Lib/test/test_applesingle.py
+++ b/Lib/test/test_applesingle.py
@@ -1,13 +1,15 @@
 # Copyright (C) 2003 Python Software Foundation
 
 import unittest
-import macostools
-import Carbon.File
-import MacOS
 import os
 from test import test_support
 import struct
+
+MacOS = test_support.import_module('MacOS')
+# The following should exist if MacOS does.
+import macostools
 import applesingle
+import Carbon.File
 
 AS_MAGIC=0x00051600
 AS_VERSION=0x00020000
diff --git a/Lib/test/test_asynchat.py b/Lib/test/test_asynchat.py
index 5501c2d..14528d8 100644
--- a/Lib/test/test_asynchat.py
+++ b/Lib/test/test_asynchat.py
@@ -1,11 +1,13 @@
-# test asynchat -- requires threading
+# test asynchat
 
-import thread # If this fails, we can't test this module
 import asyncore, asynchat, socket, threading, time
 import unittest
 import sys
 from test import test_support
 
+# Skip tests if thread module does not exist.
+test_support.import_module('thread')
+
 HOST = test_support.HOST
 SERVER_QUIT = 'QUIT\n'
 
diff --git a/Lib/test/test_cd.py b/Lib/test/test_cd.py
index daad223..edaa82b 100755
--- a/Lib/test/test_cd.py
+++ b/Lib/test/test_cd.py
@@ -2,8 +2,9 @@
 """Whimpy test script for the cd module
    Roger E. Masse
 """
-import cd
-from test.test_support import verbose
+from test.test_support import verbose, import_module
+
+cd = import_module('cd')
 
 cdattrs = ['BLOCKSIZE', 'CDROM', 'DATASIZE', 'ERROR', 'NODISC', 'PAUSED', 'PLAYING', 'READY',
            'STILL', '__doc__', '__name__', 'atime', 'audio', 'catalog', 'control', 'createparser', 'error',
diff --git a/Lib/test/test_cl.py b/Lib/test/test_cl.py
index a2728b7..50102e9 100755
--- a/Lib/test/test_cl.py
+++ b/Lib/test/test_cl.py
@@ -2,8 +2,9 @@
 """Whimpy test script for the cl module
    Roger E. Masse
 """
-import cl
-from test.test_support import verbose
+from test.test_support import verbose, import_module
+
+cl = import_module('cl')
 
 clattrs = ['ADDED_ALGORITHM_ERROR', 'ALAW', 'ALGORITHM_ID',
 'ALGORITHM_VERSION', 'AUDIO', 'AWARE_ERROR', 'AWARE_MPEG_AUDIO',
diff --git a/Lib/test/test_crypt.py b/Lib/test/test_crypt.py
index f6f3a81..4db200d 100755
--- a/Lib/test/test_crypt.py
+++ b/Lib/test/test_crypt.py
@@ -1,6 +1,7 @@
 from test import test_support
 import unittest
-import crypt
+
+crypt = test_support.import_module('crypt')
 
 class CryptTestCase(unittest.TestCase):
 
diff --git a/Lib/test/test_fork1.py b/Lib/test/test_fork1.py
index dfd5016..9306242 100644
--- a/Lib/test/test_fork1.py
+++ b/Lib/test/test_fork1.py
@@ -3,14 +3,12 @@
 
 import os
 import time
-import unittest
 from test.fork_wait import ForkWait
-from test.test_support import run_unittest, reap_children
+from test.test_support import run_unittest, reap_children, import_function
 
-try:
-    os.fork
-except AttributeError:
-    raise unittest.SkipTest, "os.fork not defined -- skipping test_fork1"
+#Skip test if fork does not exist.
+import_function(os, 'fork')
+
 
 class ForkTest(ForkWait):
     def wait_impl(self, cpid):
diff --git a/Lib/test/test_gl.py b/Lib/test/test_gl.py
index 1da55a0..be76041 100755
--- a/Lib/test/test_gl.py
+++ b/Lib/test/test_gl.py
@@ -3,8 +3,10 @@
     taken mostly from the documentation.
     Roger E. Masse
 """
-from test.test_support import verbose
-import gl, GL, time
+from test.test_support import verbose, import_module
+import time
+gl = import_module('gl')
+GL = import_module('GL')
 
 glattrs = ['RGBcolor', 'RGBcursor', 'RGBmode', 'RGBrange', 'RGBwritemask',
 '__doc__', '__name__', 'addtopup', 'altgetmatrix', 'arc', 'arcf',
diff --git a/Lib/test/test_grp.py b/Lib/test/test_grp.py
index 564c7f0..b38b94c 100755
--- a/Lib/test/test_grp.py
+++ b/Lib/test/test_grp.py
@@ -1,9 +1,10 @@
 """Test script for the grp module."""
 
-import grp
 import unittest
 from test import test_support
 
+grp = test_support.import_module('grp')
+
 class GroupDatabaseTestCase(unittest.TestCase):
 
     def check_value(self, value):
diff --git a/Lib/test/test_macos.py b/Lib/test/test_macos.py
index a9ff0b2..ce5f858 100644
--- a/Lib/test/test_macos.py
+++ b/Lib/test/test_macos.py
@@ -1,10 +1,12 @@
 import unittest
-import MacOS
-import Carbon.File
 from test import test_support
 import os
 import subprocess
 
+MacOS = test_support.import_module('MacOS')
+#The following should exist if MacOS exists.
+import Carbon.File
+
 TESTFN2 = test_support.TESTFN + '2'
 
 class TestMacOS(unittest.TestCase):
diff --git a/Lib/test/test_macostools.py b/Lib/test/test_macostools.py
index 6110ce3..b84ad72 100644
--- a/Lib/test/test_macostools.py
+++ b/Lib/test/test_macostools.py
@@ -1,13 +1,15 @@
 # Copyright (C) 2003 Python Software Foundation
 
 import unittest
-import macostools
-import Carbon.File
-import MacOS
 import os
 import sys
 from test import test_support
 
+MacOS = test_support.import_module('MacOS')
+#The following modules should exist if MacOS exists.
+import Carbon.File
+import macostools
+
 TESTFN2 = test_support.TESTFN + '2'
 
 class TestMacostools(unittest.TestCase):
diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py
index 31daa8d..2dd76ad 100644
--- a/Lib/test/test_mmap.py
+++ b/Lib/test/test_mmap.py
@@ -1,8 +1,9 @@
-from test.test_support import TESTFN, run_unittest
-import mmap
+from test.test_support import TESTFN, run_unittest, import_module
 import unittest
 import os, re
 
+mmap = import_module('mmap')
+
 PAGESIZE = mmap.PAGESIZE
 
 class MmapTests(unittest.TestCase):
diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py
index 864f963..a7255c4 100644
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -2,10 +2,6 @@
 
 from test import test_support
 
-try:
-    import posix
-except ImportError:
-    raise unittest.SkipTest, "posix is not available"
 
 import time
 import os
@@ -13,6 +9,9 @@
 import shutil
 import unittest
 import warnings
+
+posix = test_support.import_module('posix')
+
 warnings.filterwarnings('ignore', '.* potential security risk .*',
                         RuntimeWarning)
 
diff --git a/Lib/test/test_pwd.py b/Lib/test/test_pwd.py
index 255a34c..de4084e 100644
--- a/Lib/test/test_pwd.py
+++ b/Lib/test/test_pwd.py
@@ -1,7 +1,7 @@
 import unittest
 from test import test_support
 
-import pwd
+pwd = test_support.import_module('pwd')
 
 class PwdTest(unittest.TestCase):
 
diff --git a/Lib/test/test_scriptpackages.py b/Lib/test/test_scriptpackages.py
index ee14be2..a3a1857 100644
--- a/Lib/test/test_scriptpackages.py
+++ b/Lib/test/test_scriptpackages.py
@@ -2,7 +2,8 @@
 
 import unittest
 from test import test_support
-import aetools
+
+aetools = test_support.import_module('aetools')
 
 class TestScriptpackages(unittest.TestCase):
 
diff --git a/Lib/test/test_startfile.py b/Lib/test/test_startfile.py
index c4d12d7..23e2708 100644
--- a/Lib/test/test_startfile.py
+++ b/Lib/test/test_startfile.py
@@ -9,9 +9,11 @@
 
 import unittest
 from test import test_support
+import os
+from os import path
 
-# use this form so that the test is skipped when startfile is not available:
-from os import startfile, path
+startfile = test_support.import_function(os, 'startfile')
+
 
 class TestCase(unittest.TestCase):
     def test_nonexisting(self):
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 4ad2401..90bd8e6 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -55,6 +55,20 @@
         else:
             return module
 
+def import_function(module, name, deprecated=False):
+    with warnings.catch_warnings():
+        if deprecated:
+            warnings.filterwarnings("ignore", ".+ (module|package)",
+                                    DeprecationWarning)
+        try:
+            function = getattr(module, name)
+        except AttributeError:
+            raise unittest.SkipTest("No function named %s in module %s" % (
+                name, module.__name__))
+        else:
+            return function
+
+
 verbose = 1              # Flag set to 0 by regrtest.py
 use_resources = None     # Flag set to [] by regrtest.py
 max_memuse = 0           # Disable bigmem tests (they will still be run with
diff --git a/Lib/test/test_ttk_guionly.py b/Lib/test/test_ttk_guionly.py
index 831a222..aa17c47 100644
--- a/Lib/test/test_ttk_guionly.py
+++ b/Lib/test/test_ttk_guionly.py
@@ -1,10 +1,12 @@
 import os
 import sys
-import ttk
 import unittest
-from _tkinter import TclError
 from test import test_support
 
+ttk = test_support.import_module('ttk')
+#If ttk exists _tkinter must exist.
+from _tkinter import TclError
+
 try:
     ttk.Button()
 except TclError, msg:
diff --git a/Lib/test/test_winreg.py b/Lib/test/test_winreg.py
index f2ec2a8..1dbccc0 100644
--- a/Lib/test/test_winreg.py
+++ b/Lib/test/test_winreg.py
@@ -1,12 +1,15 @@
 # Test the windows specific win32reg module.
 # Only win32reg functions not hit here: FlushKey, LoadKey and SaveKey
 
-from _winreg import *
 import os, sys
 import unittest
-
 from test import test_support
 
+#Do this first so test will be skipped if module doesn't exist
+test_support.import_module('_winreg')
+#Now import everything
+from _winreg import *
+
 test_key_name = "SOFTWARE\\Python Registry Test Key - Delete Me"
 
 test_data = [
diff --git a/Lib/test/test_winsound.py b/Lib/test/test_winsound.py
index 1ed43c1..cba6ee6 100644
--- a/Lib/test/test_winsound.py
+++ b/Lib/test/test_winsound.py
@@ -2,10 +2,12 @@
 
 import unittest
 from test import test_support
-import winsound, time
+import time
 import os
 import subprocess
 
+winsound = test_support.import_module('winsound')
+
 
 class BeepTest(unittest.TestCase):
     # As with PlaySoundTest, incorporate the _have_soundcard() check
