diff --git a/Lib/importlib/__init__.py b/Lib/importlib/__init__.py --- a/Lib/importlib/__init__.py +++ b/Lib/importlib/__init__.py @@ -10,10 +10,10 @@ # Bootstrap help ##################################################### -import imp +import _imp # Use _imp rather than imp to avoid bootstrap issues import sys -_bootstrap._setup(sys, imp) +_bootstrap._setup(sys, _imp) # Public API ######################################################### diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -1209,6 +1209,11 @@ setattr(self_module, '_DEFAULT_PATH_HOOK', FileFinder.path_hook(*supported_loaders)) +def _bootstrap_from_frozen(sys_module, _imp_module): + """Use the frozen version to retrieve importlib._bootstrap from disk""" + _setup(sys_module, _imp_module) + from importlib import _bootstrap + return _bootstrap def _install(sys_module, _imp_module): """Install importlib as the implementation of import. diff --git a/Python/importlib.h b/Python/importlib.h index 9dbd8816f3060d4ea66d3db7b1980139214e3908..1059d02672c5edc49fbbd92044fadce251f3d870 GIT binary patch literal 175537 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 diff --git a/Python/pythonrun.c b/Python/pythonrun.c --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -193,10 +193,10 @@ static void import_init(PyInterpreterState *interp, PyObject *sysmod) { - PyObject *importlib; + PyObject *frozenimport; PyObject *impmod; PyObject *sys_modules; - PyObject *value; + PyObject *importlib; /* Import _importlib through its frozen version, _frozen_importlib. */ if (PyImport_ImportFrozenModule("_frozen_importlib") <= 0) { @@ -205,18 +205,18 @@ else if (Py_VerboseFlag) { PySys_FormatStderr("import _frozen_importlib # frozen\n"); } - importlib = PyImport_AddModule("_frozen_importlib"); - if (importlib == NULL) { + frozenimport = PyImport_AddModule("_frozen_importlib"); + if (frozenimport == NULL) { Py_FatalError("Py_Initialize: couldn't get _frozen_importlib from " "sys.modules"); } - interp->importlib = importlib; + interp->importlib = frozenimport; Py_INCREF(interp->importlib); /* Install _importlib as __import__ */ impmod = PyInit_imp(); if (impmod == NULL) { - Py_FatalError("Py_Initialize: can't import imp"); + Py_FatalError("Py_Initialize: can't import _imp"); } else if (Py_VerboseFlag) { PySys_FormatStderr("import imp # builtin\n"); @@ -229,12 +229,13 @@ Py_FatalError("Py_Initialize: can't save _imp to sys.modules"); } - value = PyObject_CallMethod(importlib, "_setup", "OO", sysmod, impmod); - if (value == NULL) { + importlib = PyObject_CallMethod(frozenimport, "_bootstrap_from_frozen", + "OO", sysmod, impmod); + if (importlib == NULL) { PyErr_Print(); Py_FatalError("Py_Initialize: importlib install failed"); } - Py_DECREF(value); + interp->importlib = importlib; Py_DECREF(impmod); _PyImportZip_Init();