Make sys.path and sys.argv into lists of strings.
Remove the hack in test_popen.py to overcome this issue.
diff --git a/Lib/test/test_popen.py b/Lib/test/test_popen.py
index fba3f41..397e4a3 100644
--- a/Lib/test/test_popen.py
+++ b/Lib/test/test_popen.py
@@ -20,7 +20,7 @@
 class PopenTest(unittest.TestCase):
 
     def _do_test_commandline(self, cmdline, expected):
-        cmd = '%s -c "import sys; print(list(map(str, sys.argv)))" %s'
+        cmd = '%s -c "import sys; print(sys.argv)" %s'
         cmd = cmd % (python, cmdline)
         data = os.popen(cmd).read()
         got = eval(data)[1:] # strip off argv[0]
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 71a455a..245d22a 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -1145,7 +1145,7 @@
 		p = strchr(path, delim);
 		if (p == NULL)
 			p = strchr(path, '\0'); /* End of string */
-		w = PyString_FromStringAndSize(path, (Py_ssize_t) (p - path));
+		w = PyUnicode_FromStringAndSize(path, (Py_ssize_t) (p - path));
 		if (w == NULL) {
 			Py_DECREF(v);
 			return NULL;
@@ -1190,14 +1190,14 @@
 			if (i == 0) {
 				char* fn = decc$translate_vms(argv[0]);
 				if ((fn == (char *)0) || fn == (char *)-1)
-					v = PyString_FromString(argv[0]);
+					v = PyUnicode_FromString(argv[0]);
 				else
-					v = PyString_FromString(
+					v = PyUnicode_FromString(
 						decc$translate_vms(argv[0]));
 			} else
-				v = PyString_FromString(argv[i]);
+				v = PyUnicode_FromString(argv[i]);
 #else
-			PyObject *v = PyString_FromString(argv[i]);
+			PyObject *v = PyUnicode_FromString(argv[i]);
 #endif
 			if (v == NULL) {
 				Py_DECREF(av);
@@ -1301,7 +1301,7 @@
 #endif /* Unix */
 		}
 #endif /* All others */
-		a = PyString_FromStringAndSize(argv0, n);
+		a = PyUnicode_FromStringAndSize(argv0, n);
 		if (a == NULL)
 			Py_FatalError("no mem for sys.path insertion");
 		if (PyList_Insert(path, 0, a) < 0)