Issue #14605: Use None in sys.path_importer_cache to represent no
finder instead of using some (now non-existent) implicit finder.
diff --git a/Lib/runpy.py b/Lib/runpy.py
index f826e04..71c175f 100644
--- a/Lib/runpy.py
+++ b/Lib/runpy.py
@@ -9,6 +9,7 @@
# Written by Nick Coghlan <ncoghlan at gmail.com>
# to implement PEP 338 (Executing Modules as Scripts)
+
import os
import sys
import imp
@@ -206,11 +207,7 @@
except ImportError:
pass
else:
- # The following check looks a bit odd. The trick is that
- # NullImporter throws ImportError if the supplied path is a
- # *valid* directory entry (and hence able to be handled
- # by the standard import machinery)
- importer = imp.NullImporter(path_name)
+ importer = None
cache[path_name] = importer
return importer
@@ -237,7 +234,7 @@
if run_name is None:
run_name = "<run_path>"
importer = _get_importer(path_name)
- if isinstance(importer, imp.NullImporter):
+ if isinstance(importer, (type(None), imp.NullImporter)):
# Not a valid sys.path entry, so run the code directly
# execfile() doesn't help as we want to allow compiled files
code = _get_code_from_file(path_name)