summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPablo Galindo <Pablogsal@gmail.com>2018-04-25 03:22:28 +0100
committerNick Coghlan <ncoghlan@gmail.com>2018-04-25 12:22:28 +1000
commit0977091dca59709864b14cfc129388f1f0de7bf7 (patch)
treed6a4f1fd2c977ea619abb77b2e12144ee7dd14e2
parent650ba4ffd1dcd4e5eb246d7c176e204eb90c7a86 (diff)
downloadcpython-git-0977091dca59709864b14cfc129388f1f0de7bf7.tar.gz
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.
-rw-r--r--Lib/test/test_sys.py3
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2018-04-24-22-31-04.bpo-33128.g2yLuf.rst2
-rw-r--r--Python/pylifecycle.c5
3 files changed, 5 insertions, 5 deletions
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 6933b41353..336ae447a8 100644
--- a/Lib/test/test_sys.py
+++ b/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):
diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-04-24-22-31-04.bpo-33128.g2yLuf.rst b/Misc/NEWS.d/next/Core and Builtins/2018-04-24-22-31-04.bpo-33128.g2yLuf.rst
new file mode 100644
index 0000000000..66b98cdf51
--- /dev/null
+++ b/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.
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index a9b9470c72..958219b744 100644
--- a/Python/pylifecycle.c
+++ b/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");