Issue #14605: Stop having implicit entries for sys.meta_path.

ImportWarning is raised if sys.meta_path is found to be empty.
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index 2f42906..b88acc5 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -956,8 +956,9 @@
 
 def _find_module(name, path):
     """Find a module's loader."""
-    meta_path = sys.meta_path + _IMPLICIT_META_PATH
-    for finder in meta_path:
+    if not sys.meta_path:
+        _warnings.warn('sys.meta_path is empty', ImportWarning)
+    for finder in sys.meta_path:
         loader = finder.find_module(name, path)
         if loader is not None:
             # The parent import may have already imported this module.
@@ -986,8 +987,6 @@
         raise ValueError("Empty module name")
 
 
-_IMPLICIT_META_PATH = [BuiltinImporter, FrozenImporter, PathFinder]
-
 _ERR_MSG = 'No module named {!r}'
 
 def _find_and_load(name, import_):
@@ -1195,3 +1194,4 @@
                          (SourcelessFileLoader, _suffix_list(2), True)]
     sys.path_hooks.extend([FileFinder.path_hook(*supported_loaders),
                            _imp.NullImporter])
+    sys.meta_path.extend([BuiltinImporter, FrozenImporter, PathFinder])
diff --git a/Lib/importlib/test/import_/test_meta_path.py b/Lib/importlib/test/import_/test_meta_path.py
index 3b130c9..2f65af9 100644
--- a/Lib/importlib/test/import_/test_meta_path.py
+++ b/Lib/importlib/test/import_/test_meta_path.py
@@ -1,7 +1,10 @@
 from .. import util
 from . import util as import_util
+import importlib._bootstrap
+import sys
 from types import MethodType
 import unittest
+import warnings
 
 
 class CallingOrder(unittest.TestCase):
@@ -33,6 +36,21 @@
             with util.import_state(meta_path=[first, second]):
                 self.assertEqual(import_util.import_(mod_name), 42)
 
+    def test_empty(self):
+        # Raise an ImportWarning if sys.meta_path is empty.
+        module_name = 'nothing'
+        try:
+            del sys.modules[module_name]
+        except KeyError:
+            pass
+        with util.import_state(meta_path=[]):
+            with warnings.catch_warnings(record=True) as w:
+                warnings.simplefilter('always')
+                self.assertIsNone(importlib._bootstrap._find_module('nothing',
+                                                                    None))
+                self.assertEqual(len(w), 1)
+                self.assertTrue(issubclass(w[-1].category, ImportWarning))
+
 
 class CallSignature(unittest.TestCase):
 
diff --git a/Misc/NEWS b/Misc/NEWS
index c4da5b0..373f59d 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@
 Core and Builtins
 -----------------
 
+- Issue #14605: No longer have implicit entries in sys.meta_path. If
+  sys.meta_path is found to be empty, raise ImportWarning.
+
 - Issue #14605: No longer have implicit entries in sys.path_hooks. If
   sys.path_hooks is found to be empty, a warning will be raised. If None is
   found in sys.path_importer_cache, a warning is raised and a search on
diff --git a/Modules/config.c.in b/Modules/config.c.in
index 771d901..7a24e2d 100644
--- a/Modules/config.c.in
+++ b/Modules/config.c.in
@@ -45,7 +45,6 @@
     {"_ast", PyInit__ast},
 
     /* These entries are here for sys.builtin_module_names */
-    {"__main__", NULL},
     {"builtins", NULL},
     {"sys", NULL},
 
diff --git a/PC/config.c b/PC/config.c
index 2d2141d..57b5073 100644
--- a/PC/config.c
+++ b/PC/config.c
@@ -146,7 +146,6 @@
     {"_imp", PyInit_imp},
 
     /* These entries are here for sys.builtin_module_names */
-    {"__main__", NULL},
     {"builtins", NULL},
     {"sys", NULL},
     {"_warnings", _PyWarnings_Init},
diff --git a/PC/os2emx/config.c b/PC/os2emx/config.c
index 76c7ec6..5879110 100644
--- a/PC/os2emx/config.c
+++ b/PC/os2emx/config.c
@@ -153,7 +153,6 @@
     {"_imp", initimp},
 
     /* These entries are here for sys.builtin_module_names */
-    {"__main__", NULL},
     {"builtins", NULL},
     {"sys", NULL},
 
diff --git a/PC/os2vacpp/config.c b/PC/os2vacpp/config.c
index 065343e..b26b521 100644
--- a/PC/os2vacpp/config.c
+++ b/PC/os2vacpp/config.c
@@ -91,7 +91,6 @@
         {"_imp", initimp},
 
         /* These entries are here for sys.builtin_module_names */
-        {"__main__", NULL},
         {"builtins", NULL},
         {"sys", NULL},
 
diff --git a/Python/importlib.h b/Python/importlib.h
index 7a83c02..c3a60ef 100644
--- a/Python/importlib.h
+++ b/Python/importlib.h
Binary files differ