Issue #27419: Standard __import__() no longer look up "__import__" in globals
or builtins for importing submodules or "from import".  Fixed handling an
error of non-string package name.
diff --git a/Misc/NEWS b/Misc/NEWS
index a79cfaf..714bf6a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,10 @@
 Core and Builtins
 -----------------
 
+- Issue #27419: Standard __import__() no longer look up "__import__" in globals
+  or builtins for importing submodules or "from import".  Fixed handling an
+  error of non-string package name.
+
 - Issue #27083: Respect the PYTHONCASEOK environment variable under Windows.
 
 - Issue #27514: Make having too many statically nested blocks a SyntaxError
diff --git a/Python/import.c b/Python/import.c
index 1312fd0..c1dc9a0 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1438,6 +1438,7 @@
             }
             else if (!PyUnicode_Check(package)) {
                 PyErr_SetString(PyExc_TypeError, "__name__ must be a string");
+                goto error;
             }
             Py_INCREF(package);
 
@@ -1525,15 +1526,10 @@
     _PyImport_AcquireLock();
 #endif
    /* From this point forward, goto error_with_unlock! */
-    if (PyDict_Check(globals)) {
-        builtins_import = _PyDict_GetItemId(globals, &PyId___import__);
-    }
+    builtins_import = _PyDict_GetItemId(interp->builtins_copy, &PyId___import__);
     if (builtins_import == NULL) {
-        builtins_import = _PyDict_GetItemId(interp->builtins, &PyId___import__);
-        if (builtins_import == NULL) {
-            PyErr_SetString(PyExc_ImportError, "__import__ not found");
-            goto error_with_unlock;
-        }
+        PyErr_SetString(PyExc_ImportError, "__import__ not found");
+        goto error_with_unlock;
     }
     Py_INCREF(builtins_import);