diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index 81f64f5..e6c8c80 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -301,10 +301,6 @@
     }
 
     # main config
-    UNTESTED_MAIN_CONFIG = (
-        # FIXME: untested main configuration variables
-        'module_search_path',
-    )
     COPY_MAIN_CONFIG = (
         # Copy core config to main config for expected values
         'argv',
@@ -315,7 +311,8 @@
         'install_signal_handlers',
         'prefix',
         'warnoptions',
-        # xoptions is created from core_config in check_main_config()
+        # xoptions is created from core_config in check_main_config().
+        # 'module_search_paths' is copied to 'module_search_path'.
     )
 
     # global config
@@ -389,12 +386,10 @@
         main_config = config['main_config']
 
         # main config
-        for key in self.UNTESTED_MAIN_CONFIG:
-            del main_config[key]
-
         expected_main = {}
         for key in self.COPY_MAIN_CONFIG:
             expected_main[key] = core_config[key]
+        expected_main['module_search_path'] = core_config['module_search_paths']
         expected_main['xoptions'] = self.main_xoptions(core_config['xoptions'])
         self.assertEqual(main_config, expected_main)
 
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 86f95de..7eaf376 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -967,8 +967,8 @@
     }
 
     /* Initialize warnings. */
-    if (interp->config.warnoptions != NULL &&
-        PyList_Size(interp->config.warnoptions) > 0)
+    PyObject *warnoptions = PySys_GetObject("warnoptions");
+    if (warnoptions != NULL && PyList_Size(warnoptions) > 0)
     {
         PyObject *warnings_module = PyImport_ImportModule("warnings");
         if (warnings_module == NULL) {
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 498fa91..48d8fa4 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -2464,7 +2464,20 @@
     assert(config->exec_prefix != NULL);
     assert(config->base_exec_prefix != NULL);
 
-    SET_SYS_FROM_STRING_BORROW("path", config->module_search_path);
+#define COPY_LIST(KEY, ATTR) \
+    do { \
+        assert(PyList_Check(config->ATTR)); \
+        PyObject *list = PyList_GetSlice(config->ATTR, \
+                                         0, PyList_GET_SIZE(config->ATTR)); \
+        if (list == NULL) { \
+            return -1; \
+        } \
+        SET_SYS_FROM_STRING_BORROW(KEY, list); \
+        Py_DECREF(list); \
+    } while (0)
+
+    COPY_LIST("path", module_search_path);
+
     SET_SYS_FROM_STRING_BORROW("executable", config->executable);
     SET_SYS_FROM_STRING_BORROW("prefix", config->prefix);
     SET_SYS_FROM_STRING_BORROW("base_prefix", config->base_prefix);
@@ -2475,12 +2488,19 @@
         SET_SYS_FROM_STRING_BORROW("argv", config->argv);
     }
     if (config->warnoptions != NULL) {
-        SET_SYS_FROM_STRING_BORROW("warnoptions", config->warnoptions);
+        COPY_LIST("warnoptions", warnoptions);
     }
     if (config->xoptions != NULL) {
-        SET_SYS_FROM_STRING_BORROW("_xoptions", config->xoptions);
+        PyObject *dict = PyDict_Copy(config->xoptions);
+        if (dict == NULL) {
+            return -1;
+        }
+        SET_SYS_FROM_STRING_BORROW("_xoptions", dict);
+        Py_DECREF(dict);
     }
 
+#undef COPY_LIST
+
     /* Set flags to their final values */
     SET_SYS_FROM_STRING_INT_RESULT("flags", make_flags());
     /* prevent user from creating new instances */
