Partial backport of r78826: leave import site error handler unchanged (print
the error and continue).

Merged revisions 78826-78827 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78826 | victor.stinner | 2010-03-10 23:30:19 +0100 (mer., 10 mars 2010) | 5 lines

  Issue #3137: Don't ignore errors at startup, especially a keyboard interrupt
  (SIGINT). If an error occurs while importing the site module, the error is
  printed and Python exits. Initialize the GIL before importing the site
  module.
........
  r78827 | victor.stinner | 2010-03-10 23:45:04 +0100 (mer., 10 mars 2010) | 4 lines

  ooops, fix error message in execusercustomize()

  Copy/paste failure :-)
........
diff --git a/Python/import.c b/Python/import.c
index 43eabb8..eb731d0 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2744,8 +2744,6 @@
 	}
 	else {
 		/* No globals -- use standard builtins, and fake globals */
-		PyErr_Clear();
-
 		builtins = PyImport_ImportModuleLevel("__builtin__",
 						      NULL, NULL, NULL, 0);
 		if (builtins == NULL)
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index f0dcfb3..3ea4d8c 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -245,14 +245,15 @@
 	}
 
 	initmain(); /* Module __main__ */
-	if (!Py_NoSiteFlag)
-		initsite(); /* Module site */
 
 	/* auto-thread-state API, if available */
 #ifdef WITH_THREAD
 	_PyGILState_Init(interp, tstate);
 #endif /* WITH_THREAD */
 
+	if (!Py_NoSiteFlag)
+		initsite(); /* Module site */
+
 	if ((p = Py_GETENV("PYTHONIOENCODING")) && *p != '\0') {
 		p = icodeset = codeset = strdup(p);
 		free_codeset = 1;
@@ -281,8 +282,13 @@
 				loc_codeset = strdup(loc_codeset);
 				Py_DECREF(enc);
 			} else {
-				loc_codeset = NULL;
-				PyErr_Clear();
+				if (PyErr_ExceptionMatches(PyExc_LookupError)) {
+					PyErr_Clear();
+					loc_codeset = NULL;
+				} else {
+					PyErr_Print();
+					exit(1);
+				}
 			}
 		} else
 			loc_codeset = NULL;
@@ -1543,6 +1549,8 @@
 	char *msg = NULL;
 	errtype = PyExc_SyntaxError;
 	switch (err->error) {
+	case E_ERROR:
+		return;
 	case E_SYNTAX:
 		errtype = PyExc_IndentationError;
 		if (err->expected == INDENT)