diff --git a/Lib/trace.py b/Lib/trace.py
index 5a77662..c01935f 100644
--- a/Lib/trace.py
+++ b/Lib/trace.py
@@ -53,7 +53,6 @@
 import os
 import re
 import sys
-import threading
 import time
 import token
 import tokenize
@@ -62,6 +61,22 @@
 import dis
 import pickle
 
+try:
+    import threading
+except ImportError:
+    _settrace = sys.settrace
+
+    def _unsettrace():
+        sys.settrace(None)
+else:
+    def _settrace(func):
+        threading.settrace(func)
+        sys.settrace(func)
+
+    def _unsettrace():
+        sys.settrace(None)
+        threading.settrace(None)
+
 def usage(outfile):
     outfile.write("""Usage: %s [OPTIONS] <file> [ARGS]
 
@@ -500,14 +515,12 @@
         if globals is None: globals = {}
         if locals is None: locals = {}
         if not self.donothing:
-            threading.settrace(self.globaltrace)
-            sys.settrace(self.globaltrace)
+            _settrace(self.globaltrace)
         try:
             exec(cmd, globals, locals)
         finally:
             if not self.donothing:
-                sys.settrace(None)
-                threading.settrace(None)
+                _unsettrace()
 
     def runfunc(self, func, *args, **kw):
         result = None
