mirror of https://github.com/python/cpython
Fix the import machinery if there is an error on sys.path or sys.meta_path
find_module() now raises a RuntimeError, instead of ImportError, on an error on sys.path or sys.meta_path because load_package() and import_submodule() returns None and clear the exception if a ImportError occurred.
This commit is contained in:
parent
503e5e12c2
commit
ed36c06f1d
|
@ -1235,7 +1235,7 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf,
|
||||||
|
|
||||||
meta_path = PySys_GetObject("meta_path");
|
meta_path = PySys_GetObject("meta_path");
|
||||||
if (meta_path == NULL || !PyList_Check(meta_path)) {
|
if (meta_path == NULL || !PyList_Check(meta_path)) {
|
||||||
PyErr_SetString(PyExc_ImportError,
|
PyErr_SetString(PyExc_RuntimeError,
|
||||||
"sys.meta_path must be a list of "
|
"sys.meta_path must be a list of "
|
||||||
"import hooks");
|
"import hooks");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1304,14 +1304,14 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf,
|
||||||
path = PySys_GetObject("path");
|
path = PySys_GetObject("path");
|
||||||
}
|
}
|
||||||
if (path == NULL || !PyList_Check(path)) {
|
if (path == NULL || !PyList_Check(path)) {
|
||||||
PyErr_SetString(PyExc_ImportError,
|
PyErr_SetString(PyExc_RuntimeError,
|
||||||
"sys.path must be a list of directory names");
|
"sys.path must be a list of directory names");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
path_hooks = PySys_GetObject("path_hooks");
|
path_hooks = PySys_GetObject("path_hooks");
|
||||||
if (path_hooks == NULL || !PyList_Check(path_hooks)) {
|
if (path_hooks == NULL || !PyList_Check(path_hooks)) {
|
||||||
PyErr_SetString(PyExc_ImportError,
|
PyErr_SetString(PyExc_RuntimeError,
|
||||||
"sys.path_hooks must be a list of "
|
"sys.path_hooks must be a list of "
|
||||||
"import hooks");
|
"import hooks");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1319,7 +1319,7 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf,
|
||||||
path_importer_cache = PySys_GetObject("path_importer_cache");
|
path_importer_cache = PySys_GetObject("path_importer_cache");
|
||||||
if (path_importer_cache == NULL ||
|
if (path_importer_cache == NULL ||
|
||||||
!PyDict_Check(path_importer_cache)) {
|
!PyDict_Check(path_importer_cache)) {
|
||||||
PyErr_SetString(PyExc_ImportError,
|
PyErr_SetString(PyExc_RuntimeError,
|
||||||
"sys.path_importer_cache must be a dict");
|
"sys.path_importer_cache must be a dict");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue