Call the init function of a built-in module here.
,
diff --git a/Python/import.c b/Python/import.c
index f4b4ca9..93952a5 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -148,8 +148,15 @@
 	char *name;
 {
 	object *m;
-	if ((m = dictlookup(modules, name)) == NULL)
-		m = load_module(name);
+	if ((m = dictlookup(modules, name)) == NULL) {
+		if (init_builtin(name)) {
+			if ((m = dictlookup(modules, name)) == NULL)
+				err_setstr(SystemError, "builtin module missing");
+		}
+		else {
+			m = load_module(name);
+		}
+	}
 	return m;
 }
 
@@ -204,3 +211,25 @@
 	}
 	DECREF(modules);
 }
+
+
+/* Initialize built-in modules when first imported */
+
+extern struct {
+	char *name;
+	void (*initfunc)();
+} inittab[];
+
+static int
+init_builtin(name)
+	char *name;
+{
+	int i;
+	for (i = 0; inittab[i].name != NULL; i++) {
+		if (strcmp(name, inittab[i].name) == 0) {
+			(*inittab[i].initfunc)();
+			return 1;
+		}
+	}
+	return 0;
+}