--- a/python3/gplugin-python3-loader.c Sat Nov 05 01:43:09 2022 -0500
+++ b/python3/gplugin-python3-loader.c Wed Nov 23 22:47:04 2022 -0600
@@ -341,11 +341,33 @@
gplugin_python3_loader_init_python(void)
+#if PY_VERSION_HEX >= 0x03080000 + PyConfig_InitIsolatedConfig(&config); + status = PyConfig_SetBytesString(&config, &config.program_name, + if(PyStatus_Exception(status)) { + g_warning("Could not convert program name to wchar_t string."); + PyConfig_Clear(&config); + status = Py_InitializeFromConfig(&config); + PyConfig_Clear(&config); + if(PyStatus_Exception(status)) { + g_warning("Could not initialize Python."); +#else /* PY_VERSION_HEX >= 0x03080000 */ wchar_t *argv[] = {NULL, NULL};
/* Initializes Python3 */
- if(!Py_IsInitialized())
+ if(!Py_IsInitialized()) { argv[0] = Py_DecodeLocale(g_get_prgname(), NULL);
@@ -358,6 +380,7 @@
PySys_SetArgvEx(1, argv, 0);
+#endif /* PY_VERSION_HEX >= 0x03080000 */ /* initialize pygobject */
if(gplugin_python3_loader_init_pygobject()) {
--- a/python3/gplugin-python3-test-pygobject.c Sat Nov 05 01:43:09 2022 -0500
+++ b/python3/gplugin-python3-test-pygobject.c Wed Nov 23 22:47:04 2022 -0600
@@ -25,12 +25,33 @@
main(gint argc, gchar *argv[])
+#if PY_VERSION_HEX >= 0x03080000 + PyConfig_InitIsolatedConfig(&config); + status = PyConfig_SetBytesString(&config, &config.program_name, argv[0]); + if(PyStatus_Exception(status)) { + printf("failed to convert argv[0] to wchar_t string: %s\n", argv[0]); + PyConfig_Clear(&config); + status = Py_InitializeFromConfig(&config); + PyConfig_Clear(&config); + if(PyStatus_Exception(status)) { + printf("Could not initialize Python.\n"); +#else /* PY_VERSION_HEX >= 0x03080000 */ wchar_t *wargv[] = {NULL, NULL};
- if(!Py_IsInitialized())
+ if(!Py_IsInitialized()) { len = mbstowcs(NULL, argv[0], 0);
@@ -53,6 +74,7 @@
PySys_SetArgvEx(1, wargv, 0);
+#endif /* PY_VERSION_HEX >= 0x03080000 */ /* initialize pygobject */