]> granicus.if.org Git - python/commitdiff
Fix the import machinery if there is an error on sys.path or sys.meta_path
authorVictor Stinner <victor.stinner@haypocalc.com>
Thu, 15 Sep 2011 17:28:05 +0000 (19:28 +0200)
committerVictor Stinner <victor.stinner@haypocalc.com>
Thu, 15 Sep 2011 17:28:05 +0000 (19:28 +0200)
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.

Python/import.c

index 93defeff7fb41bf5d755ebadf3d6479143f03aba..ee905eb286af8d1f48caabc5a3b774cf4a883f04 100644 (file)
@@ -1591,7 +1591,7 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf,
 
         meta_path = PySys_GetObject("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 "
                             "import hooks");
             return NULL;
@@ -1641,14 +1641,14 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf,
     }
 
     if (path == NULL || !PyList_Check(path)) {
-        PyErr_SetString(PyExc_ImportError,
+        PyErr_SetString(PyExc_RuntimeError,
                         "sys.path must be a list of directory names");
         return NULL;
     }
 
     path_hooks = PySys_GetObject("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 "
                         "import hooks");
         return NULL;
@@ -1656,7 +1656,7 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf,
     path_importer_cache = PySys_GetObject("path_importer_cache");
     if (path_importer_cache == NULL ||
         !PyDict_Check(path_importer_cache)) {
-        PyErr_SetString(PyExc_ImportError,
+        PyErr_SetString(PyExc_RuntimeError,
                         "sys.path_importer_cache must be a dict");
         return NULL;
     }