diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 26557ca..785519b 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -495,7 +495,7 @@
 	PyTuple_Fini();
 	PyList_Fini();
 	PySet_Fini();
-	PyBytes_Fini();
+	PyString_Fini();
 	PyByteArray_Fini();
 	PyInt_Fini();
 	PyFloat_Fini();
@@ -744,12 +744,12 @@
 	}
 	v = PySys_GetObject("ps1");
 	if (v == NULL) {
-		PySys_SetObject("ps1", v = PyBytes_FromString(">>> "));
+		PySys_SetObject("ps1", v = PyString_FromString(">>> "));
 		Py_XDECREF(v);
 	}
 	v = PySys_GetObject("ps2");
 	if (v == NULL) {
-		PySys_SetObject("ps2", v = PyBytes_FromString("... "));
+		PySys_SetObject("ps2", v = PyString_FromString("... "));
 		Py_XDECREF(v);
 	}
 	for (;;) {
@@ -796,16 +796,16 @@
 		v = PyObject_Str(v);
 		if (v == NULL)
 			PyErr_Clear();
-		else if (PyBytes_Check(v))
-			ps1 = PyBytes_AsString(v);
+		else if (PyString_Check(v))
+			ps1 = PyString_AsString(v);
 	}
 	w = PySys_GetObject("ps2");
 	if (w != NULL) {
 		w = PyObject_Str(w);
 		if (w == NULL)
 			PyErr_Clear();
-		else if (PyBytes_Check(w))
-			ps2 = PyBytes_AsString(w);
+		else if (PyString_Check(w))
+			ps2 = PyString_AsString(w);
 	}
 	arena = PyArena_New();
 	if (arena == NULL) {
@@ -898,7 +898,7 @@
 		return -1;
 	d = PyModule_GetDict(m);
 	if (PyDict_GetItemString(d, "__file__") == NULL) {
-		PyObject *f = PyBytes_FromString(filename);
+		PyObject *f = PyString_FromString(filename);
 		if (f == NULL)
 			return -1;
 		if (PyDict_SetItemString(d, "__file__", f) < 0) {
@@ -982,7 +982,7 @@
 		goto finally;
 	if (v == Py_None)
 		*filename = NULL;
-	else if (! (*filename = PyBytes_AsString(v)))
+	else if (! (*filename = PyString_AsString(v)))
 		goto finally;
 
 	Py_DECREF(v);
@@ -1014,7 +1014,7 @@
 		goto finally;
 	if (v == Py_None)
 		*text = NULL;
-	else if (! (*text = PyBytes_AsString(v)))
+	else if (! (*text = PyString_AsString(v)))
 		goto finally;
 	Py_DECREF(v);
 	return 1;
@@ -1237,7 +1237,7 @@
 			if (moduleName == NULL)
 				err = PyFile_WriteString("<unknown>", f);
 			else {
-				char* modstr = PyBytes_AsString(moduleName);
+				char* modstr = PyString_AsString(moduleName);
 				if (modstr && strcmp(modstr, "exceptions"))
 				{
 					err = PyFile_WriteString(modstr, f);
@@ -1261,8 +1261,8 @@
 			*/
 			if (s == NULL)
 				err = -1;
-			else if (!PyBytes_Check(s) ||
-				 PyBytes_GET_SIZE(s) != 0)
+			else if (!PyString_Check(s) ||
+				 PyString_GET_SIZE(s) != 0)
 				err = PyFile_WriteString(": ", f);
 			if (err == 0)
 			  err = PyFile_WriteObject(s, f, Py_PRINT_RAW);
@@ -1581,7 +1581,7 @@
 		if (value != NULL) {
 			u = PyObject_Str(value);
 			if (u != NULL) {
-				msg = PyBytes_AsString(u);
+				msg = PyString_AsString(u);
 			}
 		}
 		if (msg == NULL)
