]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-41718: runpy now imports pkgutil in functions (GH-24996)
authorVictor Stinner <vstinner@python.org>
Tue, 23 Mar 2021 18:22:57 +0000 (19:22 +0100)
committerGitHub <noreply@github.com>
Tue, 23 Mar 2021 18:22:57 +0000 (19:22 +0100)
Reduce the number of modules imported by "python3 -m module".

The runpy module no longer imports at startup (in the module body),
but only in functions using it: _get_code_from_file() and run_path().

Lib/runpy.py

index 7e1e1ac5dde2dfe6b906c53f54b9854aeeed90ab..caba1214262380aa00473484e111da6c4e2db9cb 100644 (file)
@@ -16,7 +16,6 @@ import importlib.util
 import io
 import types
 import os
-from pkgutil import read_code, get_importer
 
 __all__ = [
     "run_module", "run_path",
@@ -233,6 +232,7 @@ def _get_main_module_details(error=ImportError):
 
 def _get_code_from_file(run_name, fname):
     # Check for a compiled file first
+    from pkgutil import read_code
     decoded_path = os.path.abspath(os.fsdecode(fname))
     with io.open_code(decoded_path) as f:
         code = read_code(f)
@@ -255,6 +255,7 @@ def run_path(path_name, init_globals=None, run_name=None):
     if run_name is None:
         run_name = "<run_path>"
     pkg_name = run_name.rpartition(".")[0]
+    from pkgutil import get_importer
     importer = get_importer(path_name)
     # Trying to avoid importing imp so as to not consume the deprecation warning.
     is_NullImporter = False