Browse Source

bpo-33128 Fix duplicated call to importlib._install_external_importers (GH-6273)

External importers were being added in both phases of the import
system initialisation.

They're only supposed to be added in the second phase, after the
import machinery has been appropriately configured.
pull/6595/head
Pablo Galindo 8 years ago
committed by Nick Coghlan
parent
commit
0977091dca
  1. 3
      Lib/test/test_sys.py
  2. 2
      Misc/NEWS.d/next/Core and Builtins/2018-04-24-22-31-04.bpo-33128.g2yLuf.rst
  3. 5
      Python/pylifecycle.c

3
Lib/test/test_sys.py

@ -852,6 +852,9 @@ class SysModuleTest(unittest.TestCase):
check(-1<<1000, [traceback[-1]])
check(None, traceback)
def test_no_duplicates_in_meta_path(self):
self.assertEqual(len(sys.meta_path), len(set(sys.meta_path)))
@test.support.cpython_only
class SizeofTest(unittest.TestCase):

2
Misc/NEWS.d/next/Core and Builtins/2018-04-24-22-31-04.bpo-33128.g2yLuf.rst

@ -0,0 +1,2 @@
Fix a bug that causes PathFinder to appear twice on sys.meta_path. Patch by
Pablo Galindo Salgado.

5
Python/pylifecycle.c

@ -325,11 +325,6 @@ initimport(PyInterpreterState *interp, PyObject *sysmod)
/* Install importlib as the implementation of import */
value = PyObject_CallMethod(importlib, "_install", "OO", sysmod, impmod);
if (value != NULL) {
Py_DECREF(value);
value = PyObject_CallMethod(importlib,
"_install_external_importers", "");
}
if (value == NULL) {
PyErr_Print();
return _Py_INIT_ERR("importlib install failed");

Loading…
Cancel
Save