Patch from Gordon McMillan.
updatecache():  When using imputil, sys.path may contain things other than
strings.  Ignore such things instead of blowing up.
Hard to say whether this is a bugfix or a feature ...
diff --git a/Lib/linecache.py b/Lib/linecache.py
index d6fc28c..cd3e50d 100644
--- a/Lib/linecache.py
+++ b/Lib/linecache.py
@@ -69,15 +69,22 @@
     try:
         stat = os.stat(fullname)
     except os.error, msg:
-        # Try looking through the module search path
+        # Try looking through the module search path.
         basename = os.path.split(filename)[1]
         for dirname in sys.path:
-            fullname = os.path.join(dirname, basename)
+            # When using imputil, sys.path may contain things other than
+            # strings; ignore them when it happens.
             try:
-                stat = os.stat(fullname)
-                break
-            except os.error:
+                fullname = os.path.join(dirname, basename)
+            except (TypeError, AttributeError):
+                # Not sufficiently string-like to do anything useful with.
                 pass
+            else:
+                try:
+                    stat = os.stat(fullname)
+                    break
+                except os.error:
+                    pass
         else:
             # No luck
 ##          print '*** Cannot stat', filename, ':', msg